はじめに
ゲーム開発中にMP3のメタデータがあるとうまく読み込めないシーンがあったため、フォルダを選択すると一括でメタデータを削除する MP3 Matadata cleaner なるスクリプトを作りました。ついでに exe 形式で配布可能な形式にすることも調べてみました。
import os
import tkinter as tk
from tkinter import filedialog, messagebox, simpledialog
import eyed3
def clear_metadata():
for file_path in file_paths:
try:
audiofile = eyed3.load(file_path)
if audiofile is not None:
# メタデータを初期化
audiofile.initTag()
# メタデータを保存
audiofile.tag.save(version=eyed3.id3.ID3_V2_3)
except Exception as e:
messagebox.showerror("エラー", f"メタデータの削除中にエラーが発生しました: {e}")
return
messagebox.showinfo("完了", "メタデータの削除が完了しました。")
def select_folder():
directory = filedialog.askdirectory()
if directory:
listbox.delete(0, tk.END) # 既存のリストをクリア
for filename in os.listdir(directory):
if filename.endswith(".mp3"):
file_path = os.path.join(directory, filename)
try:
audiofile = eyed3.load(file_path)
if audiofile is not None and audiofile.tag is not None:
# 基本的なメタデータ(アーティスト、アルバム、タイトル)が存在するかチェック
if any([audiofile.tag.artist, audiofile.tag.album, audiofile.tag.title]):
file_paths.append(file_path)
listbox.insert(tk.END, filename)
except Exception as e:
messagebox.showerror("エラー", f"ファイルの読み込み中にエラーが発生しました: {e}")
continue
# GUIの設定
root = tk.Tk()
root.title("MP3 Metadata Cleaner")
# ファイルパスを保存するリスト
file_paths = []
# リストボックスとスクロールバーの作成
frame = tk.Frame(root)
scrollbar = tk.Scrollbar(frame, orient="vertical")
listbox = tk.Listbox(frame, width=50, height=15, yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
frame.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)
# ボタン
select_button = tk.Button(root, text="フォルダ選択", command=select_folder)
select_button.pack(padx=10, pady=5)
clean_button = tk.Button(root, text="メタデータ削除", command=clear_metadata)
clean_button.pack(padx=10, pady=5)
# GUIのメインループ
root.mainloop()
EXE化作業
Python スクリプトの EXE 化には PyInstaller を利用しました。
PyInstallerの使用方法
PyInstallerのインストール
PyInstallerをインストールするには、次のコマンドを実行します:
pip install pyinstaller
EXEファイルの作成
スクリプトファイルがあるディレクトリで、次のコマンドを実行してEXEファイルを作成します:
pyinstaller --onefile --noconsole your_script.py
このコマンドは、your_script.py
をEXEファイルに変換しますが、実行時にコンソールウィンドウは表示されません。
EXEファイルの配布
dist
フォルダ内に作成されるEXEファイルは、インストールが不要で、他のWindowsシステム上で直接実行可能です。