• Recent
  • Tags
  • Popular
  • Home
  • Docs
  • Register
  • Login
RetroPie forum home
  • Recent
  • Tags
  • Popular
  • Home
  • Docs
  • Register
  • Login

a gamelist.xml cleaner tool

Scheduled Pinned Locked Moved Ideas and Development
gamelist.xmlscript
56 Posts 21 Posters 25.7k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C
    chipsnblip
    last edited by chipsnblip 21 Jul 2018, 00:22

    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.

    1 Reply Last reply Reply Quote 1
    • D
      duiz
      last edited by 26 Jul 2018, 23:27

      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?

      1 Reply Last reply Reply Quote 0
      • H
        hansolo77
        last edited by 2 Aug 2018, 03:51

        Wow, @meleu releases another script I didn't even know about! :) Can't wait to try it out tomorrow when I'm more awake.

        Who's Scruffy Looking?

        1 Reply Last reply Reply Quote 0
        • D
          Degsy
          last edited by Degsy 14 Oct 2018, 20:33

          @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).

          1 Reply Last reply Reply Quote 1
          • P
            paffley
            last edited by paffley 27 Oct 2018, 00:33

            @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.

            1 Reply Last reply Reply Quote 1
            • F
              fefitohh
              last edited by 18 Nov 2018, 23:20

              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.

              M 1 Reply Last reply 19 Nov 2018, 04:53 Reply Quote 0
              • M
                mitu Global Moderator @fefitohh
                last edited by 19 Nov 2018, 04:53

                @fefitohh Not with this script, but someone posted something similar here for the lastplayed and playcount tags. You can adapt it to remove the rating instead.

                1 Reply Last reply Reply Quote 0
                • H
                  hansolo77 @meleu
                  last edited by 11 Feb 2019, 05:55

                  @meleu said in a gamelist.xml cleaner tool:

                  NOTE: the script doesn't work if the gamelist.xml has invalid xml characters. Such as & in Track & 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 &amp; Kaki Training (Japan) [b].zip" has been removed from xml.
                  The game with <path> = "/home/pigaming/RetroPie/roms/nds/Gakken Hangul Zanmai DS - Kiki &amp; Kaki Training (Japan) [b].zip" has been removed from xml.
                  The game with <path> = "/home/pigaming/RetroPie/roms/nds/Happy Party with Hello Kitty &amp; 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 &amp; 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 &amp; Dogs (Europe) (En,Fr,De,Es,It).zip" has been removed from xml.
                  The game with <path> = "/home/pigaming/RetroPie/roms/nds/Nintendogs - Labrador &amp; 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 &amp; Friends (Japan).zip" has been removed from xml.
                  The game with <path> = "/home/pigaming/RetroPie/roms/nds/Nintendogs - Shiba &amp; Friends (Japan).zip" has been removed from xml.
                  The game with <path> = "/home/pigaming/RetroPie/roms/nds/Percy Jackson &amp; the Lightning Thief (Europe) (En,Fr,De,Es,It).zip" has been removed from xml.
                  

                  Who's Scruffy Looking?

                  S 1 Reply Last reply 18 Feb 2019, 20:44 Reply Quote 0
                  • S
                    shantigilbert @hansolo77
                    last edited by shantigilbert 18 Feb 2019, 20:44

                    @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.xml

                    EDIT: I just opened a PR to deal with this issue

                    https://github.com/meleu/share/pull/12

                    1 Reply Last reply Reply Quote 1
                    • H
                      hansolo77
                      last edited by 19 Feb 2019, 00:49

                      Since YOu posted a pull request, do you still need me to give you the folder list and gamelist?

                      Who's Scruffy Looking?

                      S M 2 Replies Last reply 19 Feb 2019, 02:36 Reply Quote 0
                      • S
                        shantigilbert @hansolo77
                        last edited by 19 Feb 2019, 02:36

                        @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)

                        1 Reply Last reply Reply Quote 0
                        • M
                          meleu @hansolo77
                          last edited by 19 Feb 2019, 03:10

                          @hansolo77 to test @shantigilbert's script you must have to download it:

                          wget https://raw.githubusercontent.com/shantigilbert/share/master/gamelist-cleaner.sh
                          
                          • Useful topics
                          • joystick-selection tool
                          • rpie-art tool
                          • achievements I made
                          1 Reply Last reply Reply Quote 0
                          • H
                            hansolo77
                            last edited by 19 Feb 2019, 03:27

                            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.

                            Who's Scruffy Looking?

                            1 Reply Last reply Reply Quote 0
                            • pjftP
                              pjft
                              last edited by pjft 4 Jun 2019, 20:48 6 Apr 2019, 19:37

                              @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!

                              M 1 Reply Last reply 6 Apr 2019, 19:57 Reply Quote 0
                              • M
                                meleu @pjft
                                last edited by 6 Apr 2019, 19:57

                                @pjft oh! I seriously need to update that script... I'll try it soon...

                                • Useful topics
                                • joystick-selection tool
                                • rpie-art tool
                                • achievements I made
                                pjftP 1 Reply Last reply 6 Apr 2019, 20:06 Reply Quote 1
                                • pjftP
                                  pjft @meleu
                                  last edited by 6 Apr 2019, 20:06

                                  @meleu no prob, it is a great tool nonetheless :) It's just a matter of not replacing the Daphne gamelist :D

                                  How are things? Good to hear from you!

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    bmulligan
                                    last edited by 4 Nov 2020, 00:23

                                    Great tool. You've saved me hours of eye, back and neck strain. Thank you for this!

                                    1 Reply Last reply Reply Quote 1
                                    • E EctoOne referenced this topic on 31 Jul 2022, 01:22
                                    • First post
                                      Last post

                                    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.

                                      This community forum collects and processes your personal information.
                                      consent.not_received