音楽ファイルを整理していると、ファイル名と中身の情報(タグ情報)が一致していないことがよくあります。たとえば、再生ソフトで「不明なアーティスト」「トラック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. アプリの設計
今回作るアプリの機能は以下の通りです。
- ファイル選択ダイアログでMP3またはFLACファイルを選ぶ
- タイトルとアーティストを入力する
- [保存] ボタンでタグ情報を書き換える
- 成功・失敗をポップアップ表示で知らせる
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を使えば、既存のタグ編集ソフトに頼らず、自分だけのカスタマイズ可能な音楽管理ツールを作成できます。今回のアプリはタイトルとアーティストの編集に限定していますが、ライブラリを活用すればアルバム名やジャンル、アートワークなども簡単に追加できます。音楽好きやファイル整理が好きな方は、ぜひこの方法をベースに自分専用のツールを作ってみてください。
コメント