Take and Scrape Your Own Screenshots
-
@meleu tried it with "save on exit" set to false, now retroarch doesn't change it to ~, and no error in the runcommand. The gamelist.xml in my roms dir now has 2 entries for the game i screenshotted, one without the <image> and one (at the end of the file) with the <image>, but lost the <name> data, which was replaced with the romname.
I'm using -lr-fba-next running out of the "arcade" section, to try and screenshot "99lstwar.zip", which the name for is "99: The Last War". Before running the script, ES showed the correct full name; after running it, i have my screenshot, but it's listed as "99lstwar"
manually copied the gamelist.xml,
edit: guess the last was an unnecessary step, but I tried with another game, same result.
2nd edit: lost the descriptions also
-
@gomisensei
I've updated the script to deal with the tilde~
and to print the full path file name to the image as you suggested.
You can get it again:wget https://raw.githubusercontent.com/meleu/src/master/screeper.sh mv screeper.sh /opt/retropie/configs/all/runcommand-onend.sh
The gamelist.xml in my roms dir now has 2 entries for the game i screenshotted, one without the <image> and one (at the end of the file) with the <image>
Yeah. I've noticed it when trying to reproduce your issue. I will work on it.
I'm using -lr-fba-next running out of the "arcade" section, to try and screenshot "99lstwar.zip", which the name for is "99: The Last War". Before running the script, ES showed the correct full name; after running it, i have my screenshot, but it's listed as "99lstwar"
Oh. I developed and tested the script only with the classics consoles, it was easy because they are used to use the ROM file name. The arcade games use the complete name of the game in ES. I'll try to adapt the script to deal with it.
2nd edit: lost the descriptions also
Do you mean the script deleted your metadata? I can't see how it can do this.
Thanks for your detailed feedback!
-
@meleu said in Take and Scrape Your Own Screenshots:
mv screeper.sh /opt/retropie/configs/all/runcommand-onend.sh
I'll test in tmrw, bedtime now.
didn't delete my metadata, just added a second entry into the gamelist without the previously saved metadata, and ES only seems to read the last one, so my scraped <name> and <desc> are in the first entry, but not in the script-written one.
-
@gomisensei
Got it. I'm trying to solve this. Thanks! -
@gomisensei
Man! I've just discovered that the arcade game names are hardcoded on ES code! If it doesn't find the info from the gamelist.xml it gets from the ES itself!https://raw.githubusercontent.com/RetroPie/EmulationStation/master/es-app/src/MameNameMap.cpp
Just sharing this curious info. I'm still trying to find a workaround to our issue. :-)
-
@gomisensei said in Take and Scrape Your Own Screenshots:
I'm using -lr-fba-next running out of the "arcade" section, to try and screenshot "99lstwar.zip", which the name for is "99: The Last War". Before running the script, ES showed the correct full name; after running it, i have my screenshot, but it's listed as "99lstwar"
I updated the script to avoid it. Worked fine in my tests. Can you see if it works for you?
I'll work on the other issue ASAP (duplicated entries in gamelist.xml). Thanks!
-
@meleu they're both the same problem, rather than find an existing entry, and add the image tag, it creates a whole new entry, (which is probably fine for console titles, but not Arcade). Still does it, but it works with the ~ dir now...
I can probably rescrape after I get all the pics done, and my names/descs will be back.
-
@gomisensei said in Take and Scrape Your Own Screenshots:
I can probably rescrape after I get all the pics done, and my names/descs will be back.
Please, keep in mind that the script doesn't mess with your original gamelist.xml. If you want to undo what the method 2 did, it's pretty easy. Look here:
https://github.com/RetroPie/RetroPie-Setup/wiki/Take-and-Scrape-Your-Own-Screenshots#i-didnt-like-how-it-looks-i-want-my-old-images-back-and-disable-this-stuff -
@meleu Yes, but if i scrape without downloading images, and point the scraper to my image dir, it will use the screenshots made with method2, and reset the other metadata.
-
@gomisensei said in Take and Scrape Your Own Screenshots:
@meleu Yes, but if i scrape without downloading images, and point the scraper to my image dir, it will use the screenshots made with method2, and reset the other metadata.
I got it. You are right.
The problem happens because my script "detects" if the game is present in the gamelist.xml trying to find the "<image>...</image>" entry for this game. And it's proven that it is not the best idea.
I'll try to find another approach. -
@gomisensei
I think I solved all the issues. Let's remember:- deal with tilde
~
inscreenshot_directory
. - do not use the rom name if it's an arcade game.
- do not create duplicated gamelist.xml entries (actually this was solved as "do not detect games in gamelist looking for the <image> field").
- if the game is present and has no <image> field, just create this field with the screenshot.
And as an extra:
- can start a gamelist.xml from scratch.
Could you test it again?
wget https://raw.githubusercontent.com/meleu/src/master/screeper.sh mv screeper.sh /opt/retropie/configs/all/runcommand-onend.sh
Thanks again.
- deal with tilde
-
@meleu said in Take and Scrape Your Own Screenshots:
I think I solved all the issues. Let's remember:
Seems to work, just did a few quick test as i am about to sleep.
Successfully adds image to entry with no image.
Replaces existing image if a new one is found.
Will test gamelist creation tmrw.
Thanks for the work, appreciate it, this is a great tool for us folks who want our own screenshots without using a text editor.
-
@gomisensei
Your feedback was really important to these last fixes.I enjoyed to code it. Improved my
sed
skills. :-)I'm just having troubles to take screenshots of the arcade games main screen, because the hotkey is select and it also insert coins (easy to workaround remapping this function to another button). :-) Apart from that, everything seems to be fine.
-
@meleu said in Take and Scrape Your Own Screenshots:
@gomisensei
Your feedback was really important to these last fixes.I enjoyed to code it. Improved my
sed
skills. :-)YW
I'm just having troubles to take screenshots of the arcade games main screen, because the hotkey is select and it also insert coins (easy to workaround remapping this function to another button). :-) Apart from that, everything seems to be fine.
I just hit menu key, then quick menu -> take screenshot for each one.
-
Just sharing an info...
I have just noticed that when scraping screenshots with those methods, the runcommand launch menu art doesn't work.I think it happens because runcommand searches for filenames ending with
-image.{jpg,png}
, as we can see here:for path in "${image_paths[@]}"; do if [[ -f "$path/${rom_bn}-image.jpg" ]]; then image="$path/${rom_bn}-image.jpg" break elif [[ -f "$path/${rom_bn}-image.png" ]]; then image="$path/${rom_bn}-image.png" break fi done
-
@meleu simple enough to either add an on start function to look for non -images or a different function to batch append -image to all jpg and png files.
-
@herb_fargus
The renaming process needs to occurs before the gamelist.xml manipulation in both methods. If it occurs after, the ES will look for the filename in the<image>
field and won't find the file.It would be simple in method 2, because it already uses a
runcommand-onend.sh
script. But method 1 would need aruncommand-onend.sh
just for this task.For now I will just add a warning in the wiki talking about this issue...
-
I followed the wiki but found out that Retroarch was overwriting the changes your runcommand-onend.sh script was making.
Turns out, "Save Meta Data On Exit" was enabled by default under "Main Menu>Other Settings". Once I disabled this everything worked beautifully.
I think it would be helpful if the wiki is updated to reflect/mention checking this.
Thanks for the great work on the script!
PS: I'm on RetroPie 4.0.
edit: words
-
@Chameleon The "save metadata on exit" has nothing to do with RetroArch. It's an emulationstation feature. Anyway, I can't reproduce your issue here.
I turned on the "save metadata on exit", played some games that has screenshots as emulationstation image, exited emulationstation (to get metadata updated), came back to emulationstation and the screenshots still there.
Can you describe what exactly happened to you?
-
I was trying to capture screenshots for arcade roms that didn't have an existing image (ie: no existing <image> tags in the gamelist.xml).
After capturing an in game screenshot, a file would be saved to my custom screenshot directory with the rom as the name of the file (as expected).
The emu/system level gamelist.xml showed that your script added the <image> tag details (as expected).
Once I restarted emulationstation (via the menu), I noticed the emu/system level gamelist.xml has been overwritten with the original contents (ie: <Image> tag details are removed).
Further testing concluded that what ever was in memory was most likely being written back into the gamelist.xml file upon emulationstation restart; hence the <image> tag removal.
I then turned off "Save MetaData On Exit" and the gamelist.xml file was no longer being overwritten upon emulationstation restart.
Side note: trying to capture screenshots with lr-mame2003 produces no images in my custom folder, but it works fine for fba-next and lr-mame4all.
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.