[SCRIPT] RetroPie Limit Last Played Games
-
@cyperghost the file being 'tmp/es-restart' or my script?
-
@hiulit The restart file
Because ES entitiy deletes the file on restart and if it was created by root it won't work -
@cyperghost got it. Thanks! I'll try it ;)
-
@hiulit I've found a little "bug", if there are more games that have the exactly same
lastplayed
it will give you this errore:Number of 'last played' games to limit is set to '1'. psx --- 'gamelist.xml' for 'psx' found! > Creating 'gamelist-backups.xml' for 'psx' ... 'gamelist-backups.xml' for 'psx' created successfully! ./retropie-limit-last-played-games.sh: line 124: [[: 0 1: syntax error in expression (error token is "1") ./retropie-limit-last-played-games.sh: line 124: [[: 0 1: syntax error in expression (error token is "1") No 'last played' games to remove. All done!
After i change the time, i just add 1 second, everything is working without a problem.
I think it's almost impossible to have more games with the samelastplayed
date and time unless someone manually edit the file and make some mistakes, so probably is not a big deal. -
@madhorse Hmmm... I'll take a look at it. But what are the odds of having the same date on different
lastplayed
tags? How is it even possible to open 2 different games at the same time? :P hehe! Anyway, I'll look into it. -
@hiulit said in [SCRIPT] RetroPie Limit Last Played Games:
@madhorse Hmmm... I'll take a look at it. But what are the odds of having the same date on different
lastplayed
tags? How is it even possible to open 2 different games at the same time? :P hehe! Anyway, I'll look into it.Exactly, in fact i manually edited the gamelist.xml to add some games because i didn't want to scrape it, copy and paste the
<game>
section and then changed thename
and thepath
, by doing this i also duplicated thelastplayed
date and time.
I just pointed out because if someone needs help for the error./retropie-limit-last-played-games.sh: line 124: [[: 0 1: syntax error in expression (error token is "1")
you know why, but i don't think you need to spend much time over this problem.
-
@madhorse I figured it out. I'll test it a bit and I'll upload a new version. It would be cool if you could help me test once this fix is uploaded. I'll let you know. Thanks!
P.S. This will be on Wednesday. Tomorrow is a holiday for me :P
-
@hiulit No problem mate, I will be happy to test the new version.
Thank you and happy holiday :) -
Version 2.1.0 of RetroPie Limit Last Played Games is here!
Added
- Dialog asking if the user wants to restart EmulationStation when the script is done.
- Output message for the games that will be shown in the 'last played' section.
Fixed
- When there are duplicated <lastplayed> tags in different games the script crashes. Now, if the scripts find duplicates, it looks for the game's name (it should be different).
Thanks to @cyperghost for the restart function and @MadHorse for testing the script.
-
Updated the documentation for v2.1.0 - 2018-09-12 in the first post.
-
Hi @hiulit,
I'm so sorry, but checking the name introduced two more trouble.
If the name contain a'
single quote, it will complain because itFailed to compile select expression
Number of 'last played' games to limit is set to '10'. daphne ------ 'gamelist.xml' for 'daphne' found! > Creating 'gamelist-backups.xml' for 'daphne' ... 'gamelist-backups.xml' for 'daphne' created successfully! Invalid predicate: /gameList/game[name='Dragon's Lair II: Time Warp (US v3.19)']/playcount compilation error: element with-param XSLT-with-param: Failed to compile select expression '/gameList/game[name='Dragon's Lair II: Time Warp (US v3.19)']/playcount' Invalid predicate: /gameList/game[name='Dragon's Lair']/playcount compilation error: element with-param XSLT-with-param: Failed to compile select expression '/gameList/game[name='Dragon's Lair']/playcount' > Removing the 'last played' games surplus for 'daphne' ... ERROR: There aren't enough 'last played' games to remove. Try lowering the '--nth' number. Now it's set to '10' and there are only 4 games in 'daphne'.
Daphne
gamelist.xml
contains 6 played games, but 2 games are not counted beacuse of theXSLT-with-param: Failed to compile select expression
.The other error is, if there are more games with the same name, it will give you another error
Number of 'last played' games to limit is set to '10'. amiga ----- 'gamelist.xml' for 'amiga' found! > Creating 'gamelist-backups.xml' for 'amiga' ... 'gamelist-backups.xml' for 'amiga' created successfully! ./retropie-limit-last-played-games.sh: line 125: [[: 1 1: syntax error in expression (error token is "1") ./retropie-limit-last-played-games.sh: line 125: [[: 1 1: syntax error in expression (error token is "1") > Removing the 'last played' games surplus for 'amiga' ... ERROR: There aren't enough 'last played' games to remove. Try lowering the '--nth' number. Now it's set to '10' and there is only 1 game in 'amiga'.
and instead of the same
lastplayed
date and time, finding more games witht he same name is easier, you may have multiple version of the same game, for example you may have the same Amiga games on CD32,CDTV, ADF or for example in many languages, but when you scrape the games, you will have the same name for every version of the game unless you don't manually change it.
One las note, the 2 amiga games with the same name, didn't have the samelastplayed
date<game> <path>./Turrican2_v1.4_CDTV.lha</path> <name>Turrican II : The Final Fight</name> <desc>Turrican II: The Final Fight is a platformer/shooter as typically seen on consoles, but designed for home computers from the ground up. Its plot is - naturally - very simple: an evil mega-robot called The Machine attacks the United Planets Ship Avalon 1, slaughtering all who resist. All - except Bren McGuire, who manages to escape and slips into the experimental Turrican bionic armor. As Turrican, he strives to show The Machine who's the boss. Unlike other games of its type, this game contains three levels of horizontal shooter action in the spirit of R-Type or the developers' own Katakis. Six large worlds are to be explored, where you are basically free to go everywhere you want, since there is no automatic scrolling and the levels are packed with hidden extra lives and weapons. All those levels are very different: the first one in the rock desert is pretty colorful with parallaxing rainbow background and happy music, while the following worlds get darker and darker.</desc> <image>./media/images/Turrican 2 (CDTV).png</image> <rating>0.95</rating> <releasedate>19910101T000000</releasedate> <developer>Factor 5</developer> <publisher>Rainbow Arts Software</publisher> <genre>Platform</genre> <playcount>1</playcount> <lastplayed>20180719T150228</lastplayed> </game> <game> <path>./Turrican2_v1.7_0029.lha</path> <name>Turrican II : The Final Fight</name> <desc>Turrican II: The Final Fight is a platformer/shooter as typically seen on consoles, but designed for home computers from the ground up. Its plot is - naturally - very simple: an evil mega-robot called The Machine attacks the United Planets Ship Avalon 1, slaughtering all who resist. All - except Bren McGuire, who manages to escape and slips into the experimental Turrican bionic armor. As Turrican, he strives to show The Machine who's the boss. Unlike other games of its type, this game contains three levels of horizontal shooter action in the spirit of R-Type or the developers' own Katakis. Six large worlds are to be explored, where you are basically free to go everywhere you want, since there is no automatic scrolling and the levels are packed with hidden extra lives and weapons. All those levels are very different: the first one in the rock desert is pretty colorful with parallaxing rainbow background and happy music, while the following worlds get darker and darker.</desc> <image>./media/images/Turrican 2 (CDTV).png</image> <rating>0.95</rating> <releasedate>19910101T000000</releasedate> <developer>Factor 5</developer> <publisher>Rainbow Arts Software</publisher> <genre>Platform</genre> <playcount>1</playcount> <lastplayed>20180720T005157</lastplayed> </game>
I beg your pardon, if it wasn't for me, you made a perfectly working script unless someone don't mess with the
gamelist.sml
file.
I'm so sorry, may I help you in any way ? -
@madhorse whooops, it's getting tricky! Haha! Would you mind copying a couple of your gamelists into pastebin.com or something similar so I can test with real game lists? In the virtual machine where I develop the scripts I only have a couple of games to test.
The first issue involving the characters, I think I can escape them so it doesn't crash. The second one needs a little bit more of testing.
Thanks a lot for helping me test the script, btw!
-
@madhorse your Daphne and Amiga game lists would be enough, I think.
-
@hiulit said in [SCRIPT] RetroPie Limit Last Played Games:
@madhorse your Daphne and Amiga game lists would be enough, I think.
No Problem,
This is the Daphne Gamelist and this is the Amiga GamelistThanks a lot for helping me test the script, btw!
Thanks to you for your work and for helping us to Limit the Last Played list :)
-
@hiulit said in [SCRIPT] RetroPie Limit Last Played Games:
@madhorse whooops, it's getting tricky! Haha!
In my head, I heard your words in the voice of the first Doctor Who. Especially the laughter! š
-
Retropie Limit Last Played Games v2.1.1 is out!
CHANGELOG
Fixed
- Issue with duplicate game names but different
<lastplayed>
tags ingamelist.xml
. Now the script takes both the game name and its<lastplayed>
tag to avoid duplicates. If there are more than one game with same name and<lastplayed>
tag, the script won't work. - Escape game names with single quotes in
gamelist.xml
. - Escape ampersands (
&
) ingamelist.xml
.
@MadHorse all your issues should now be fixed! :P
EDIT: Until you find more, hehe! ;)
- Issue with duplicate game names but different
-
AND THE WINNER IS @hiulit :D
You did it man, I made some fast test with the new version and it's working perfectly, it' s awesome.
Now, because I'm a BAD guy, i tried to trick the script and made a gamelist with 2 exactly duplicate games, same name and same date, obviously the script gave an error, and then it completed the work.Anyway, if someone has messed up the
gamelist.xml
so badly is what I-(he) deserve :)))You are the best, thank you for your hard work, i love your script.
-
Hi @hiulit I'm here again, unfortunately for another bug.
Usually in thegamelist.xml
the&
character is written as&
, probably there is something tricky with the escape of&
because after you execute the script, it will transform it to&amp;
, if you execute it another time you will get&amp;amp;
I'm so sorry to bring you bad news. -
@madhorse Hey! Yeah, totally my bad... Such a noob thing to do :( Or in this case, NOT to do..
I only check for unescaped
&
because in one of yourgamelist.xml
there were a lot of them and the software that parses the xml, which isxmlstarlet
, was crashing because of that. So I assumed that scrapers would always add the unescaped&
and I didn't take into account that it was possible for some scrapers to have the escaped version&
.I'll fix it asap.
Thanks for the heads up! ;)
-
New RetroPie Limit Last Played Games 2.1.2 is out!
@MadHorse if you could give it a try.... hehe! ;) Thanks!
CHANGELOG
[2.1.2] - 2018-09-20
Fixed
- Escape special characters function.
Added
- Validate XML function.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.