【Day54】MP3/FLACタグ編集 Windowsアプリ(Python + PySimpleGUI + mutagen)

未分類

音楽ファイルを整理していると、ファイル名と中身の情報(タグ情報)が一致していないことがよくあります。たとえば、再生ソフトで「不明なアーティスト」「トラック01」などと表示されてしまい、管理がしにくくなるケースです。このような場合、タグ編集ソフトを使うことで解決できますが、既存のソフトは英語UIだったり広告が入ったりすることもあります。そこで今回は、Pythonで自作のタグ編集Windowsアプリを作り、MP3やFLACの音楽ファイルを一括で管理できる環境を整えてみましょう。

1. 音楽ファイルのタグとは何か?

音楽ファイルには、曲名、アーティスト名、アルバム名、ジャンル、トラック番号などの情報が埋め込まれています。これらを総称して「タグ」と呼びます。代表的なタグ規格には、MP3形式で使われる「ID3タグ」、FLAC形式で使われる「Vorbisコメント」などがあります。タグは音楽ファイルに直接埋め込まれており、再生ソフトやスマートフォン、音楽プレーヤーが曲情報を表示する際に利用されます。

2. MP3とFLACのタグの違い

  • MP3(ID3タグ):バイナリ形式で保存されるタグ情報。mutagenライブラリではEasyID3クラスを使って簡単に操作できます。
  • FLAC(Vorbisコメント):テキストベースのタグ情報。mutagenライブラリのFLACクラスで操作可能です。

この違いを理解しておくと、アプリで複数形式に対応させやすくなります。

3. Pythonでタグ編集をするメリット

市販やフリーのタグ編集ソフトと比較して、Pythonで自作するメリットは以下の通りです。

  • 自分が必要な機能だけを搭載できる
  • 広告なし・軽量・ポータブルに作れる
  • バッチ処理や自動化機能を追加しやすい
  • 他の処理(ファイル整理や自動命名)と統合できる

4. 今回使用するPythonライブラリ

  • mutagen:MP3やFLACのタグ情報を編集できるライブラリ。多くの形式に対応。
  • PySimpleGUI:Pythonで簡単にGUIアプリを作れるライブラリ。Windowsアプリの見た目を簡単に作成可能。
pip install mutagen PySimpleGUI

5. アプリの設計

今回作るアプリの機能は以下の通りです。

  1. ファイル選択ダイアログでMP3またはFLACファイルを選ぶ
  2. タイトルとアーティストを入力する
  3. [保存] ボタンでタグ情報を書き換える
  4. 成功・失敗をポップアップ表示で知らせる

6. 実装コード

import os
import PySimpleGUI as sg
from mutagen.easyid3 import EasyID3
from mutagen.flac import FLAC

def _ext(path: str) -> str:
    return os.path.splitext(path)[1].lower()

def edit_tags(file_path: str, title: str, artist: str) -> bool:
    try:
        ext = _ext(file_path)
        if ext == ".mp3":
            audio = EasyID3(file_path)
            audio["title"] = title
            audio["artist"] = artist
            audio.save()
        elif ext == ".flac":
            audio = FLAC(file_path)
            audio["title"] = title
            audio["artist"] = artist
            audio.save()
        else:
            sg.popup_error("対応していないファイル形式です")
            return False
        return True
    except Exception as e:
        sg.popup_error("エラー", f"{type(e).__name__}: {e}")
        return False

sg.theme("SystemDefault")
layout = [
    [sg.Text("音楽ファイルを選択(MP3/FLAC)")],
    [sg.Input(key="-FILE-", expand_x=True, readonly=True),
     sg.FileBrowse(file_types=(("音楽ファイル", "*.mp3;*.flac"),))],
    [sg.Text("タイトル"), sg.Input(key="-TITLE-", expand_x=True)],
    [sg.Text("アーティスト"), sg.Input(key="-ARTIST-", expand_x=True)],
    [sg.Button("保存", key="-SAVE-"), sg.Button("終了", key="-EXIT-")],
    [sg.StatusBar("ファイル未選択", key="-STATUS-")]
]

window = sg.Window("音楽タグ編集アプリ", layout)

while True:
    event, values = window.read()
    if event in (sg.WINDOW_CLOSED, "-EXIT-"):
        break
    if event == "-SAVE-":
        file_path = values["-FILE-"]
        title = values["-TITLE-"].strip()
        artist = values["-ARTIST-"].strip()
        if not file_path or not title or not artist:
            sg.popup_error("全ての項目を入力してください")
            continue
        if edit_tags(file_path, title, artist):
            sg.popup("保存しました")
            window["-STATUS-"].update("保存成功")
        else:
            window["-STATUS-"].update("保存失敗")

window.close()

7. exe化して配布する方法

PythonがインストールされていないPCでも使えるようにするため、pyinstallerでexe化します。

pip install pyinstaller
pyinstaller --noconsole --onefile music_tag_editor.py

8. 実務・趣味での活用例

  • 大量のMP3コレクションを整理するとき
  • ポッドキャストや自作音源のメタデータを編集
  • DJセット用の楽曲整理
  • 会社の音声教材や研修音声のタグ統一

9. 発展的な機能追加案

  • Web API(MusicBrainzなど)から自動でタグ取得
  • アルバムアート埋め込み機能
  • フォルダ内の全曲を一括編集するバッチ機能
  • タグ情報をCSVでインポート/エクスポート

まとめ

Pythonを使えば、既存のタグ編集ソフトに頼らず、自分だけのカスタマイズ可能な音楽管理ツールを作成できます。今回のアプリはタイトルとアーティストの編集に限定していますが、ライブラリを活用すればアルバム名やジャンル、アートワークなども簡単に追加できます。音楽好きやファイル整理が好きな方は、ぜひこの方法をベースに自分専用のツールを作ってみてください。

コメント

タイトルとURLをコピーしました