mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2024-11-28 16:45:42 +00:00
88 lines
4.3 KiB
Python
88 lines
4.3 KiB
Python
#!/usr/bin/python3
|
|
|
|
# Original Script by https://gist.github.com/nullstalgia
|
|
|
|
import os
|
|
import shutil
|
|
import configparser
|
|
import sys
|
|
import getopt
|
|
|
|
retrodeck_folder = os.path.expanduser('~')+"/retrodeck"
|
|
|
|
rclone_executable = os.path.expanduser('~')+"/retrodeck/rclone/rclone"
|
|
|
|
sync_config_path=f"/var/config/rclone/cloud-sync.conf"
|
|
sync_config_def_path=f"/var/config/rclone/cloud-sync.conf.default"
|
|
|
|
rclone_config_path=f"/var/config/rclone/rclone.conf"
|
|
rclone_config_def_path=f"/var/config/rclone/rclone.conf.default"
|
|
|
|
rules_config_path=f"/var/config/rclone/cloud-sync-rules.conf"
|
|
rules_config_def_path=f"/var/config/rclone/cloud-sync-rules.conf.default"
|
|
|
|
# make sure we have some configs
|
|
if not os.path.exists(sync_config_path):
|
|
shutil.copyfile(sync_config_def_path, sync_config_path)
|
|
|
|
# https://stackoverflow.com/questions/2819696/parsing-properties-file-in-python/25493615#25493615
|
|
|
|
with open(sync_config_path, 'r') as f:
|
|
config_string = '[dummy_section]\n' + f.read()
|
|
config = configparser.ConfigParser()
|
|
config.read_string(config_string)
|
|
sync_remote = config['dummy_section']['CLOUD_SYNC_REMOTE'].replace('"', "")
|
|
sync_path = config['dummy_section']['CLOUD_SYNC_PATH'].replace('"', "").rstrip("/")
|
|
|
|
|
|
if not os.path.exists(rclone_config_path):
|
|
#shutil.copyfile(rclone_config_def_path, rclone_config_path)
|
|
raise(FileNotFoundError)
|
|
|
|
if not os.path.exists(rules_config_path):
|
|
shutil.copyfile(rules_config_def_path, rules_config_path)
|
|
|
|
# parse the args and see if we want to upload or download
|
|
try:
|
|
opts, args = getopt.getopt("h:u:d:",["--upload","--download"])
|
|
except getopt.GetoptError:
|
|
print ("Unknown argument, run with -h or --help for a list of supported arguments.")
|
|
sys.exit(2)
|
|
for opt, arg in opts:
|
|
if opt == ("-h", "--help"):
|
|
print (f"Usage:\n\
|
|
flatpak run [FLATPAK-RUN-OPTION] net.retrodeck-retrodeck [ARGUMENTS]\n\
|
|
\n\
|
|
Arguments:\n\
|
|
-h, --help Print this help\n\
|
|
-u, --upload Upload your saves and screenshots on the cloud\n\
|
|
-d ,--download Download your saves and screenshots from the cloud\n\
|
|
\n\
|
|
https://retrodeck.net")
|
|
sys.exit()
|
|
elif opt in ("-u", "--upload"):
|
|
|
|
# upload states
|
|
#print("Syncing savestates")
|
|
#os.system(f"rclone sync -P {retrodeck_folder}/roms/ \"{sync_remote}\":\"{sync_path}/savestates\" --include *.state* --log-file {retrodeck_folder}/.logs/cloud-sync.log")
|
|
|
|
# upload saves
|
|
os.system(f'zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --text=Uploading saves, screenshots.\n\nPress ok to continue and wait for the completion message.')
|
|
os.system(f"rclone sync -P {retrodeck_folder}/roms/ \"{sync_remote}\":\"{sync_path}/\" --filter-from {rules_config_path} --log-file {retrodeck_folder}/.logs/cloud-sync.log")
|
|
os.system(f'zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --text=Done!\n\nYou can check the logfiles in {retrodeck_folder}/.logs/cloud-sync.log')
|
|
|
|
elif opt in ("-d", "--download"):
|
|
|
|
# download states
|
|
#print("Syncing savestates")
|
|
#os.system(f"rclone sync -P \"{sync_remote}\":\"{sync_path}/savestates\" {retrodeck_folder}/roms/ --include *.state* --log-file {retrodeck_folder}/.logs/cloud-sync.log")
|
|
|
|
# download saves
|
|
os.system(f'zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --text=Downloading saves, screenshots.\n\nPress ok to continue and wait for the completion message.')
|
|
os.system(f"rclone sync -P \"{sync_remote}\":\"{sync_path}/\" {retrodeck_folder}/roms/ --filter-from {rules_config_path} --log-file {retrodeck_folder}/.logs/cloud-sync.log")
|
|
os.system(f'zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" --title "RetroDECK" --text=Done!\n\nYou can check the logfiles in {retrodeck_folder}/.logs/cloud-sync.log')
|
|
|
|
#TODO: remove gamedata
|
|
#TODO: include the config files
|
|
#TODO: put this script elsewhere and call it with proper tools
|
|
#TODO: move zenity in said tools and use cli output here |