Take and Scrape Your Own Screenshots
-
OK, the method2 onend script isn't working. It saves a copy of the gamelist.xml from the ES gamelist dir to my rom dir (if one doesn't already exist there) , there is definitely an image file called "pacman.png" (or whatever) in the "~/RetroPie/roms/arcade/images" dir, but the log says
--- start of runcommand-onend.sh ---
There is no screenshot for "pacman" in the "~/RetroPie/roms/arcade/images" folder.
Exiting...file is there, everything is set correctly, I think
-
@gomisensei
It worked fine for me. Let's see what is happening...According to what you said, it's failing on this test:
if ! [[ -f "$screenshot_dir/$image" ]]; then
Can you paste here the output of
ls -l ~/RetroPie/roms/arcade/images/*.png
?[EDIT: you are right, everything is set correctly. Otherwise the script would interrupt before and with other log messages. I'm suspecting of file names...]
-
@gomisensei
I reproduced your problem. I've just realized that theif
statement doesn't recognize the tilde~
symbol as the home directory! Look:pi@retropie:~ $ [[ -d "~/RetroPie" ]] && echo directory exists pi@retropie:~ $ [[ -d "/home/pi/RetroPie" ]] && echo directory exists directory exists pi@retropie:~ $
Well, to make it work for you, change your
screenshot_directory
in the respective retroarch.cfg to/home/pi/RetroPie/...
I'll update the wiki mentioning this issue. Thanks for your feedback!
-
@meleu maybe you could add (if just for debug), exactly what filename the script is looking for and not finding? also, is it supposed to save a copy of the es gamelist to your rom dir? or is that just temporary? would i need to manually move it to the es gamelist dir when ES quits, so it won't be overwritten on exit?
-
@meleu you may want to use an environment variable rather than hardcoding if you want it to work irrespective of the platform: e.g.
[[ -d "$HOME/RetroPie" ]]
-
@meleu i didn't use the ~ in my config file, but retroarch changed it from home/pi/ to ~/
-
@herb_fargus but the script must get the directory from retroarch.cfg
screeshot_directory
. The user can put any valid path there.@gomisensei I used
/home/pi
and it works fine here... -
@meleu just re-entered the first line in arcade/retroarch.cfg as screenshot_directory = "/home/pi/RetroPie/roms/arcade/images", saved, then when i ran retroarch, it changed the /home/pi/ to ~/ again as soon as i exited...
-
@gomisensei said in Take and Scrape Your Own Screenshots:
@meleu maybe you could add (if just for debug), exactly what filename the script is looking for and not finding?
good point. I'll change it.
is it supposed to save a copy of the es gamelist to your rom dir? or is that just temporary?
It's the real intention. Because if the user want to go back the only thing to do is to delete this file and emulationstation will get the gamelist.xml from
~/.emulationstation/gamelist/SYSTEM/gamelist.xml
. Look the precedence order here: https://github.com/RetroPie/EmulationStation/blob/master/GAMELISTS.mdwould i need to manually move it to the es gamelist dir when ES quits, so it won't be overwritten on exit?
No. It'll be "overwritten" (maybe "updated" fits better) only if "save metadata on exit" is on. And it doesn't remove entries, it just updates the last played and times played info (not sure if it updates more info).
-
@gomisensei said in Take and Scrape Your Own Screenshots:
@meleu just re-entered the first line in arcade/retroarch.cfg as screenshot_directory = "/home/pi/RetroPie/roms/arcade/images", saved, then when i ran retroarch, it changed the /home/pi/ to ~/ again as soon as i exited...
Are you using
save_config_on_exit = "true"
?[EDIT: the script must deal with it anyway. I'll update it and let you know when it is ready.]
-
@meleu ah i didnt realise it was something the user set. nvm then. carry on
-
@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.
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.