import diva import os import subprocess import tempfile import utage from distutils.dir_util import copy_tree, remove_tree from glob import glob def update_all(cache_dir, update_dir, translation_dir, extract_dir, languages): print("Copying images") copy_images(cache_dir, update_dir) print("Processing TSV files") update_tsv(cache_dir, update_dir, translation_dir, languages) print("Processing Quest Json files") diva.quest.update_missions(cache_dir, translation_dir, languages) # this code isn't going to run on windows because i need to rewrite it # it just calls my zsh scripts and generates it that way, need to replace them # with real python or something print("Processing Sound Effects") copy_tree( os.path.join(cache_dir, "Android/Asset/Sound/Se"), os.path.join(extract_dir, "Se"), ) subprocess.run("./update_se.zsh", shell=True, cwd=extract_dir) copy_tree(os.path.join(extract_dir, "se"), os.path.join(update_dir, "Se")) print("Processing BGM - don't forget to copy that loop file") copy_tree( os.path.join(cache_dir, "Android/Asset/Sound/Bgm"), os.path.join(extract_dir, "Bgm"), ) subprocess.run("./update_bgm.zsh", shell=True, cwd=extract_dir) copy_tree( os.path.join(extract_dir, "bgm"), os.path.join(update_dir, "Bgm") ) print("Processing voices") copy_tree( os.path.join(cache_dir, "Android/Asset/Sound/Voice"), os.path.join(extract_dir, "Voice"), ) subprocess.run("./update_voice.zsh", shell=True, cwd=extract_dir) copy_tree( os.path.join(extract_dir, "voice"), os.path.join(update_dir, "Voice") ) print("Processing movies - this might take forever") copy_tree( os.path.join(cache_dir, "Common/Asset/Movie"), os.path.join(extract_dir, "Movie"), ) subprocess.run("./update_movie.zsh", shell=True, cwd=extract_dir) copy_tree( os.path.join(extract_dir, "movie"), os.path.join(update_dir, "Asset/Movie"), ) def update_tsv(cache_dir, update_dir, translation_dir, languages): utage_tmp = tempfile.mkdtemp() copy_tree(os.path.join(cache_dir, "Common/Asset/Utage"), utage_tmp) utage.crypt.crypt_dir( utage_tmp, bytearray("SampleSecretKey", "utf-8"), False, False ) for encrypted in glob( os.path.join(utage_tmp, "**/*.utage"), recursive=True ): try: os.remove(encrypted) except: pass utage.translate.translate_dir( utage_tmp, os.path.join(update_dir, "Utage"), os.path.join(translation_dir, "Missions"), ) utage.names.update_names(utage_tmp, translation_dir, languages) copy_tree( os.path.join(utage_tmp, "Diva"), os.path.join(update_dir, "Utage/Diva") ) remove_tree(utage_tmp) def copy_images(cache_dir, update_dir): copy_tree( os.path.join(cache_dir, "Common/Asset/Image"), os.path.join(update_dir, "Asset/Image"), ) copy_tree( os.path.join(cache_dir, "Common/Sample"), os.path.join(update_dir, "Sample"), )