0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MP3のメタデータを一括削除するスクリプト【さらにEXE化】

Posted at

はじめに

ゲーム開発中にMP3のメタデータがあるとうまく読み込めないシーンがあったため、フォルダを選択すると一括でメタデータを削除する MP3 Matadata cleaner なるスクリプトを作りました。ついでに exe 形式で配布可能な形式にすることも調べてみました。

image.png

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システム上で直接実行可能です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?