Requirements
- Python 2.7
- pyinstaller -
pip install pyinstaller
Once everything is installed configure the script and use pyinstaller -F --clean --noupx --win-private-assemblies ds3_save_backup.py
.
Your executeable is in ./dist
from os import getenv, listdir, makedirs | |
from os.path import join, isdir, exists | |
from datetime import datetime | |
from shutil import copytree | |
from time import sleep | |
dark_souls_folder_name = 'DarkSoulsIII' | |
save_folder_name = 'save_backups' | |
backup_interval_secs = 5 * 60 | |
def find_ds3_folder(): | |
if dark_souls_folder_name in listdir(getenv('APPDATA')): | |
return join(getenv('APPDATA'), dark_souls_folder_name) | |
def backup_folders(ds3_folder): | |
current_date = datetime.now() | |
formatted_date = current_date.strftime("%y%m%d-%H.%M") | |
folders = [(join(ds3_folder, f), f) | |
for f in listdir(ds3_folder) | |
if isdir(join(ds3_folder, f)) | |
and f != save_folder_name] | |
for full_path, folder_name in folders: | |
copytree(full_path, join(ds3_folder, save_folder_name, formatted_date, folder_name)) | |
def create_backup_folder(ds3_folder): | |
save_path = join(ds3_folder, save_folder_name) | |
if exists(save_path): | |
return | |
makedirs(save_path) | |
def main(): | |
ds3_folder = find_ds3_folder() | |
if ds3_folder is None: | |
print("Unable to find DarkSoulsIII folder in '%s'" % (getenv('APPDATA'))) | |
create_backup_folder(ds3_folder) | |
backup_folders(ds3_folder) | |
if __name__ == '__main__': | |
print("Dark souls 3 - Save backup") | |
print("Backing up every %s secs" % (backup_interval_secs)) | |
print("Backup folder: %s" % (join(getenv('APPDATA'), dark_souls_folder_name, save_folder_name))) | |
while True: | |
try: | |
main() | |
print("Saved.") | |
except Exception as e: | |
print("Save didn't complete. \n%s" % (e)) | |
sleep(float(backup_interval_secs)) |