1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
import shutil import os # 設定ファイル名 config_file = 'config.txt' # 初期設定(デフォルトのディレクトリ) default_dirs = { 'source_dir_oldfiles': r'C:\Users\owner\デスクトップ\DepotDownloader-windows-x64\depots\1585182\16570987', 'source_dir_fontreplace': r'C:\Users\owner\デスクトップ\resources.assets', 'source_dir_jafiles': r'C:\Users\owner\デスクトップ\ja', 'destination_dir_oldfiles': r'D:\SteamLibrary\steamapps\common\Drova - Forsaken Kin', 'destination_dir_fontreplace': r'D:\SteamLibrary\steamapps\common\Drova - Forsaken Kin\Drova_Data', 'destination_dir_jafiles': r'D:\SteamLibrary\steamapps\common\Drova - Forsaken Kin\Drova_Data\StreamingAssets\Localization' } # 設定ファイルが存在する場合、以前の設定を読み込む def load_config(): if os.path.exists(config_file): with open(config_file, 'r') as file: config = file.read().splitlines() # 設定を辞書に読み込む return {key: value for key, value in (line.split('=') for line in config)} return {} # 設定を保存する def save_config(config): with open(config_file, 'w') as file: for key, value in config.items(): file.write(f"{key}={value}\n") # 設定を読み込む config = load_config() # ユーザーにディレクトリの入力を促す(デフォルトは既存の設定) def get_directory_input(prompt, default_value): user_input = input(f"{prompt}(デフォルト: {default_value}): ") return user_input.strip() or default_value # コピー元ディレクトリの確認(ユーザー入力) source_dir_oldfiles = get_directory_input("過去ゲームファイルコピー元ディレクトリ (source_dir_oldfiles)", config.get('source_dir_oldfiles', default_dirs['source_dir_oldfiles'])) source_dir_fontreplace = get_directory_input("アセットコピー元*直指定* (source_dir_fontreplace)", config.get('source_dir_fontreplace', default_dirs['source_dir_fontreplace'])) source_dir_jafiles = get_directory_input("jaフォルダコピー元ディレクトリ (source_dir_jafiles)", config.get('source_dir_jafiles', default_dirs['source_dir_jafiles'])) # コピー先ディレクトリの確認(ユーザー入力) destination_dir_oldfiles = get_directory_input("過去ゲームファイルコピー先ディレクトリ (destination_dir_oldfiles)", config.get('destination_dir_oldfiles', default_dirs['destination_dir_oldfiles'])) destination_dir_fontreplace = get_directory_input("アセットコピー先ディレクトリ (destination_dir_fontreplace)", config.get('destination_dir_fontreplace', default_dirs['destination_dir_fontreplace'])) destination_dir_jafiles = get_directory_input("jaフォルダコピー先ディレクトリ (destination_dir_jafiles)", config.get('destination_dir_jafiles', default_dirs['destination_dir_jafiles'])) # コピー先ディレクトリ(source_dir_jafiles のフォルダ名を保持) destination_dir_jadetail = os.path.join(destination_dir_jafiles, os.path.basename(source_dir_jafiles)) # 各コピー先ディレクトリが存在する場合、削除 def remove_directory_if_exists(directory_path): if os.path.exists(directory_path): shutil.rmtree(directory_path) # コピー先ディレクトリが存在する場合は削除 remove_directory_if_exists(destination_dir_oldfiles) remove_directory_if_exists(destination_dir_fontreplace) remove_directory_if_exists(destination_dir_jadetail) # 各ディレクトリのコピー try: shutil.copytree(source_dir_oldfiles, destination_dir_oldfiles) print(f"{source_dir_oldfiles} の中身を {destination_dir_oldfiles} にコピーしました。") except Exception as e: print(f"{source_dir_oldfiles} のコピーに失敗しました: {e}") try: shutil.copy(source_dir_fontreplace, destination_dir_fontreplace) print(f"{source_dir_fontreplace} を {destination_dir_fontreplace} にコピーしました。") except Exception as e: print(f"{source_dir_fontreplace} のコピーに失敗しました: {e}") try: shutil.copytree(source_dir_jafiles, destination_dir_jadetail) print(f"フォルダ {source_dir_jafiles} を {destination_dir_jadetail} にコピーしました。") except Exception as e: print(f"{source_dir_jafiles} のコピーに失敗しました: {e}") # 設定を保存する config.update({ 'source_dir_oldfiles': source_dir_oldfiles, 'source_dir_fontreplace': source_dir_fontreplace, 'source_dir_jafiles': source_dir_jafiles, 'destination_dir_oldfiles': destination_dir_oldfiles, 'destination_dir_fontreplace': destination_dir_fontreplace, 'destination_dir_jafiles': destination_dir_jafiles }) save_config(config) # ダイアログを表示して、Enterを押すと終了する input("コピーが完了したよ☆ Enterを押すとプログラムを終了します...") # プログラム終了メッセージ print("プログラムを終了します...") |
なんか解説するのもメンドクサイしろものですが、よーするに適宜config.txtの内容を変えてコピペ元のフォルダを指定、日本語化作業の一連のコピペ作業を効率よく簡単にできるPythonソースコードです。ちょっと混乱しがちなので解説しましょう。まず、このゲームの1.0.6.1バージョンでは三つコピペしなけりゃならない作業があります。ゲームそのものを旧作にロックオンする作業・アセットファイルそのもののコピペ作業・ローカリゼーションファイルのコピペ作業、この三つですね。
source_dir_oldfiles
コピペ元のゲームファイル(バージョン1.0.6.1のゲームファイルにとっかえる)
source_dir_fontreplace
アセットファイル resources.assets(単一ファイルコピペなのでcopytreeではなくcopyで処理する)
source_dir_jafiles
ローカリゼーションに使うファイル(jaフォルダを適切な位置に突っ込む)
destination_dir_oldfiles
source_dir_oldfiles ディレクトリを Drova – Forsaken Kin に対して指定
destination_dir_fontreplace
アセットファイル resources.assetsを Drova – Forsaken Kin\Drova_Data に対して指定
destination_dir_jafiles
source_dir_jafiles ディレクトリを Drova – Forsaken Kin\Drova_Data\StreamingAssets\Localizationに対して指定
よーするにsourceってのがコピペ元でdestinationがコピペ先と考えてくれればよい。3か所が3か所に対応する(とーぜんですがw)ので3*2=6の指定がある、というわけです。でも待てよと。これSteamのアプデで自動的に新規ファイル割り振られちゃうんじゃね?って思うでしょ。まさしくその通りなので全部クリーンアップしてますね。remove_directory_if_exists このコマンドですYO!
ディレクトリ構成は変わるかもしれないので一例です。それぞれ適切なものをconfig.txtに書き込んでください(また、書き込む方法が.pyファイルを実行したときに提示されるのでその旨を了承したうえで厳密に適切にコピペ元ファイルのあるディレクトリの指定をしてください)。まぁそんなこんなで、この方法がいつまで有効なんでしょうねw
<糸冬>