diff --git a/es_configs/es_systems.xml b/es_configs/es_systems.xml index 41f00e31..c55ae691 100644 --- a/es_configs/es_systems.xml +++ b/es_configs/es_systems.xml @@ -1410,7 +1410,7 @@ tools RetroDECK Tools /var/config/retrodeck/tools - .sh .SH + .sh .SH .py .PY bash %ROM% tools tools diff --git a/retrodeck.sh b/retrodeck.sh index 13282d77..a84cf308 100644 --- a/retrodeck.sh +++ b/retrodeck.sh @@ -189,6 +189,7 @@ finit() { mkdir -pv $rdhome/states mkdir -pv $rdhome/screenshots mkdir -pv $rdhome/bios/pico-8 + mkdir -pv $rdhome/.logs # XMLSTARLET HERE cp -f /app/retrodeck/es_settings.xml /var/config/emulationstation/.emulationstation/es_settings.xml diff --git a/tools/cloud-sync.py b/tools/cloud-sync.py new file mode 100644 index 00000000..ed6cf9c9 --- /dev/null +++ b/tools/cloud-sync.py @@ -0,0 +1,46 @@ +#!/usr/bin/python3 + +import os +import shutil +import configparser + +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) + +# sync states +#print("Syncing savestates") +#os.system(f"rclone bisync -v --workdir /var/cache/rclone/bisync {retrodeck_folder}/roms/ \"{sync_remote}\":\"{sync_path}/savestates\" --include *.state* --log-file {retrodeck_folder}/.logs/cloud-sync.log") + +print("Syncing saves, screenshots, and gamedata") +os.system(f"rclone bisync -v --workdir /var/cache/rclone/bisync {retrodeck_folder}/roms/ \"{sync_remote}\":\"{sync_path}/\" --filters-file {rules_config_path} --log-file {retrodeck_folder}/.logs/cloud-sync.log") \ No newline at end of file