GUI版ドラマ・アニメ用タグ付けpythonスクリプト
plexmediaserverのためのドラマ・アニメ用タグ付けをするpythonスクリプトのGUI版です。
ChatGPTに相談したら、tkinterというライブラリを紹介してくれました。
Windows11とUbuntu22.04で動作確認をしました。
使い方
スクリプトの準備
ダウンロードして、適当なフォルダに展開してください。
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版は、フォルダの指定が簡単になりました。
ご活用ください。













コメントを残す