GUI版ドラマ・アニメ用タグ付けpythonスクリプト
plexmediaserverのためのドラマ・アニメ用タグ付けをするpythonスクリプトのGUI版です。
ChatGPTに相談したら、tkinterというライブラリを紹介してくれました。
Windows11とUbuntu22.04で動作確認をしました。
GUI版ドラマ・アニメ用タグ付けpythonスクリプト
使い方
スクリプトの準備
ダウンロードして、適当なフォルダに展開してください。
Windowsならば、PowerShellを
Ubuntuならば、端末を
開いてください。
展開したフォルダに、以下の3つのフォルダと2つのスクリプトを確認してください。
- test_files_1
- test_files_2
- test_files_original
- rename_animedrama.py
- rename_animedrama_g.py
GUI版スクリプトは、rename_animedrama_g.pyです。
test_filesの3つのフォルダの中身は、同じです。
14種類の名前が付いたファイルが入っています。
test_files_originalは使わず、test_files_1やtest_files_2を使って
タグ付けを試してください。
変換前と変換後を比較するために、test_files_originalを参照してください。
スクリプトの実行
以下の通り、実行してください。
c:\>python rename_animedrama_g.py
実行するとwindowが開きます。
「フォルダ選択」をクリックします。
下の「フォルダー」欄で「test_files_1」が表示されていることを確認します。
右下の「フォルダーの選択」ボタンをクリックすると処理が実行されます。
結果は、以下のように表示されます。
ファイル数:フォルダー内にあるファイルの数
変更済み: 名前を変更したファイルの数
結果を確認するために、フォルダーの中身を確認します。
下の3ファイルは、漢数字、既にタグがあったファイルで、それ以外の11ファイルが正常にタグ付けされたことがわかります。
オリジナルを確認してみましょう。
ソースコード rename_animedrama_g.py
# rename_animedrama_g.py # version 1.0 # 2023/05/17 # by simplelife&ChatGPT # import os import tkinter as tk from tkinter import filedialog import re import argparse # 正規表現パターンのコンパイル season_pattern = re.compile(r'(Season|season|season |シーズン)(\d{1,2})') ep1 = re.compile(r'(#|♯)\d{1,3}') ep2 = re.compile(r'\(\d{1,3}\)') ep3 = re.compile(r'第\d{1,3}話') episode_list = [ep1, ep2, ep3] se_pattern = re.compile(r'(s|S)(\d{1,2})(e|E)(\d{1,3})') # 全角から半角に変換するテーブル zenkaku_table = str.maketrans('1234567890()#', '1234567890()#') def browse_folder(): folder_selected = filedialog.askdirectory() folder_path.set(folder_selected) update_file_count() def update_file_count(): folder = folder_path.get() file_count = 0 renamed_count = 0 for root, dirs, files in os.walk(folder): for file in files: file_count += 1 file_path = os.path.join(root, file) new_file = rename_file(file) if new_file != file: renamed_count += 1 new_file_path = os.path.join(root, new_file) os.rename(file_path, new_file_path) file_count_label.config(text="ファイル数: {}".format(file_count)) renamed_count_label.config(text="変更済み: {}".format(renamed_count)) complete_label.config(text="処理が完了しました") def rename_file(file_name): new_file_name = file_name file_name = file_name.translate(zenkaku_table) if not re.search(se_pattern, file_name): match = re.search(season_pattern, file_name) if match: season = re.sub(r'\D', "", match.group()) else: season = 1 for episode_pattern in episode_list: match = re.search(episode_pattern, file_name) if match: episode = re.sub(r'\D', "", match.group()) new_file_name = re.sub( episode_pattern, match.group() + f'_s{season}e{episode}', file_name) print(match.group()) return new_file_name # Tkinterウィンドウの作成 window = tk.Tk() window.title("plexmediaアニメドラマタグ付け") window.geometry("200x200") # フォルダ選択ボタンの作成 browse_button = tk.Button(window, text="フォルダ選択", command=browse_folder) browse_button.pack() # フォルダパス表示用のラベルの作成 folder_path = tk.StringVar() folder_path_label = tk.Label(window, textvariable=folder_path) folder_path_label.pack() # ファイル数表示用のラベルの作成 file_count_label = tk.Label(window, text="ファイル数: 0") file_count_label.pack() # 変更済みファイル数表示用のラベルの作成 renamed_count_label = tk.Label(window, text="変更済み: 0") renamed_count_label.pack() # 処理完了表示用のラベルの作成 complete_label = tk.Label(window, text="") complete_label.pack() # ウィンドウのメインループ window.mainloop()
まとめ
GUI版は、フォルダの指定が簡単になりました。
ご活用ください。
コメントを残す