# Windows path: os.getenv('LOCALAPPDATA')/Programs/PrismLauncher/prismlauncher.exe # Windows instance path: os.getenv('APPDATA')/PrismLauncher/instances # Linux instance path: .local/share/PrismLauncher/instances from ftplib import FTP_TLS as FTP import os import io import json import tempfile import subprocess import time def main(): instance_name = "Familycraft Season 7" prism_command = "prismlauncher" prism_instance_path = os.getenv("HOME")+"/.local/share/PrismLauncher/instances" if os.name == 'nt': prism_command = os.getenv('LOCALAPPDATA')+"/Programs/PrismLauncher/prismlauncher.exe" prism_instance_path = os.getenv("APPDATA")+"/PrismLauncher/instances" ftp = FTP("gitea.piwalker.net") ftp.login() ftp.prot_p() bio = io.BytesIO() ftp.retrbinary("RETR versions.json", bio.write) bio.seek(0) versions = json.load(bio) bio.close() version = "0.0.0" if os.path.exists(prism_instance_path+"/"+instance_name+"/.minecraft/version.txt"): with open(prism_instance_path+"/"+instance_name+"/.minecraft/version.txt", 'r') as fp: version = fp.readline().rstrip() if version != versions[len(versions)-1]["Version"]: #version = versions[len(versions)-1]["Version"] # Update Modpack print(version) print(versions[len(versions)-1]["Version"]) with tempfile.TemporaryDirectory() as temp_dir: modpack = open(os.path.join(temp_dir, instance_name+".mrpack"), 'wb') ftp.retrbinary("RETR "+versions[len(versions)-1]["File"], modpack.write) modpack.close() p = subprocess.Popen([prism_command, '-I', modpack.name]) while True: time.sleep(5) if os.path.exists(prism_instance_path+"/"+instance_name+"/.minecraft/version.txt"): with open(prism_instance_path+"/"+instance_name+"/.minecraft/version.txt", 'r') as fp: version = fp.readline().rstrip() if version == versions[len(versions)-1]["Version"]: break; #with open(prism_instance_path+"/"+instance_name+"/version.txt", 'w') as fp: # fp.seek(0) # fp.truncate() # fp.write(version) subprocess.run([prism_command, '-l', instance_name]) if __name__ == "__main__": main();