a gamelist.xml cleaner tool
-
@meleu I've now tried this on several PCs, (including the Windows Subsystem for Linux!) and it's the same result on all of them.
To reproduce...
Download one of the gamelist.xml and downloaded_images files/folders from the this master repository: https://github.com/recalbox/recalbox-gamelists/tree/master/gamelists .
Drop them in your system's ROMS folder. This is based on the no-intro romset, which my collection is based on.
You should now have the gamelist.xml file, downloaded_images folder and ROMs under your ROMS folder (in this example I'm using the NES system).
Run the gamelist-cleaner.sh script after editing the settings to point at your ROMS folder.
The script appears to run perfectly. I can watch the output in Terminal with glee!
But, after inspecting the new xml file, you'll see that entries such as Advanced Dungeons & Dragons - DragonStrike (USA).zip are still present even though, in my case, I don't have the ROM for that game.
Is this a formatting issue? Has anyone else experienced this?
Any advice would be hugely appreciated as this is the last step I need to nail before my system is finished. I'll be editing out the remaining entries in the mean time.
Thanks.
-
@greenie
Regarding the&
char, it's a known issue and I posted about it here. In the linked post you can see a workaround to fix this issue (I agree that it isn't the ideal solution, though).And thanks for this report. ;-)
-
@meleu Thanks for the response. I don't think this is exactly the same issue, I'm not sure what workaround you refer to on your post either.
The problem I was getting is that anything in the gamelist.xml file with "& amp ;" in the name was not getting removed. It could see the entry, and list it as removed in the terminal, but the entry remained.
I have managed to find my own workaround:
- Find/Replace on gamelist.xml, changing all "& amp ;" to "ampersand".
- Use A Better Finder Rename on the Mac (I'm sure there are similar tools out there, but I have this handy) to replace all "&" in ROM file names to "ampersand".
- Run your script, then reverse the above steps.
Bish bash bosh. Done.
-
I'm new to RetroPie, but wanted to say thank you for this tool. My OCD thanks you as well. Sweet, sweet, clean gamelist!
-
@meleu could my issues here relate to the symlink issues I have in the other thread regarding launching images?
-
i think i might have found the culprit regarding games that have an ampersand in the filename (
&
in the gamelist.xml)line 221 in the script reads:
xmlstarlet ed -L -d "/gameList/game[path=\"$path\"]" "$clean_gamelist"
but if i change it to:
xmlstarlet ed -L -d "/gameList/game[path=\"$full_path\"]" "$clean_gamelist"
they are handled properly. i'm not a programmer by any means (just a computer enthusiast), so hopefully someone with more knowledge than myself can confirm that it's working.
-
I suffer from some rather messy gamelists, but I am a newbie when it comes to these commandline things... Is it possible to request a small step by step guide to get this up and running for a beginner with little experience in github and etc?
-
Wow, @meleu releases another script I didn't even know about! :) Can't wait to try it out tomorrow when I'm more awake.
-
@chipsnblip Nearly right.. and that led me on to the fix
If you instead add in this above the xmlstarlet line, it will handle it correctly.
path="$(echo "$path" | sed 's@&@\&@g')"
If you want to go further and want to see feedback onscreen when its triggered, then INSTEAD add in this block above the xmlstarlet line:
#& fix if [[ $path == *"&"* ]]; then path="$(echo "$path" | sed 's@&@\&@g')" echo "& fix applied" fi
The reason why it was failing was that either bash or xmlstarlet was translating it incorrectly.
The $full_path that you were using already has the&
translated back to&
, but that variable also includes the full path of the rom (/home/pi/RetroPie/roms/… etc) which does not match what is in the XML (didn't match mine anyway). -
@meleu I like the look of this so thank you.
I have it installed on my pi.
I have my gamelist.xml in my roms folder along with all my artwork (boxart/cartart/snap etc).Please could you let me know what I type in the command line to run the script?
I've tried all but failed miserably haha :P
Update: I believe I have sorted it, its running the script now as I type :)
Update 2: This script is amazing! Thank you so much, works flawlessly with @Degsy fix in the above post.
-
Hi
Is it possible to use this tool to remove certain tags contained in every available gamelist.xml?
What I would like to do is to remove the scraped "raiting" from all my gamlists.
-
-
@meleu said in a gamelist.xml cleaner tool:
NOTE: the script doesn't work if the gamelist.xml has invalid xml characters. Such as
&
inTrack & Field
. I will try to take a look at it soon.Fortunately I implemented the
--update
feature, then the users can always try to run the script with that argument to get the latest version :-)EDIT: HA! Looks like EmulationStation auto fix the gamelist.xml files with invalid xml characters as soon as it needs to update a gamelist.xml file. Then I'm not worried about this issue for a while! :D
This "bug" is bugging me. I have a huge Nintendo DS collection I've been going through. I have a lot of duplicate games as a result of different regions (USA, Europe, Japan). So after scraping, I'm going through my gamelist and removing all the extra non-USA versions where possible. I'm up to the letter P now, after about 4 days lol. I was editing the
gamelist.xml
manually until letter G before I remembered this script! Anyway, when I'm running the script, it's always missing some roms. I tried re-running it multiple times with the same result. I couldn't find a repo in your github to report it as an error, so I looked here. I discovered that any games with the&
symbol in the filename (designated as&
it would report as removed but wouldn't be). Sure enough, you already recognized it. So I'm just confirming that the issue still remains. I've even tried running the-u
flag to update but it doesn't look like you've done anything with yet (cough 2 years). :)I can still edit these out manually, but a fix would be nice for other people too. Hope you're doing well. Have a good one!
Example output of games NOT getting removed:
The game with <path> = "/home/pigaming/RetroPie/roms/nds/Gakken Chuugokugo Zanmai DS - Kiki & Kaki Training (Japan) [b].zip" has been removed from xml. The game with <path> = "/home/pigaming/RetroPie/roms/nds/Gakken Hangul Zanmai DS - Kiki & Kaki Training (Japan) [b].zip" has been removed from xml. The game with <path> = "/home/pigaming/RetroPie/roms/nds/Happy Party with Hello Kitty & Friends! (Europe) (En,Fr,De,Es,It,Nl).zip" has been removed from xml. The game with <path> = "/home/pigaming/RetroPie/roms/nds/My Baby 2 - Boy & Girl (Europe) (En,Fr,De,Es,It,Nl).zip" has been removed from xml. The game with <path> = "/home/pigaming/RetroPie/roms/nds/My Best Friends - Cats & Dogs (Europe) (En,Fr,De,Es,It).zip" has been removed from xml. The game with <path> = "/home/pigaming/RetroPie/roms/nds/Nintendogs - Labrador & Friends (Europe) (En,Fr,De,Es,It).zip" has been removed from xml. The game with <path> = "/home/pigaming/RetroPie/roms/nds/Nintendogs - Miniature Dachshund & Friends (Japan).zip" has been removed from xml. The game with <path> = "/home/pigaming/RetroPie/roms/nds/Nintendogs - Shiba & Friends (Japan).zip" has been removed from xml. The game with <path> = "/home/pigaming/RetroPie/roms/nds/Percy Jackson & the Lightning Thief (Europe) (En,Fr,De,Es,It).zip" has been removed from xml.
-
@hansolo77 I was having the same isue but I think I found a solution that works for me, I just need to confirm that it works on other setups, could you do a
ls -la
in your NDS rom folder and post the result to pastebin ? also paste your gamelist.xmlEDIT: I just opened a PR to deal with this issue
-
Since YOu posted a pull request, do you still need me to give you the folder list and gamelist?
-
@hansolo77 It would be helpful to test, or you can test it yourself see if that fixes your issue (in case you still have it)
-
@hansolo77 to test @shantigilbert's script you must have to download it:
wget https://raw.githubusercontent.com/shantigilbert/share/master/gamelist-cleaner.sh
-
Grrr... I was all excited and ready to test this, but it looks like I already manually cleaned my gamelist. I'll have to wait and see if it shows up on any new systems I add.
-
@meleu just saying that I'm late to the party, but this is spectacular. Thank you for putting this together! Hope you're doing great :)
Edit: actually, some feedback: this totally fails for games whose ROM is the folder - such as Daphne. It doesn't detect the folder and removes it from the gamelist. Other than that, all seems to be working well!
-
@pjft oh! I seriously need to update that script... I'll try it soon...
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.