FLACをMP3に変換→タグのコピー

http://d.hatena.ne.jp/progd/20091227/1261914093 の方法だとMP3のタグが無い状態になってしまう。
以下のPythonスクリプトFLACファイルからタグを移植する。

#!/usr/bin/env python2.6
#coding: utf-8

import sys
from mutagen.flac import FLAC
from mutagen.easyid3 import EasyID3, EasyID3KeyError

# コマンドライン引数を取得
argvs = sys.argv
if len(argvs) != 2:
    print "usage: python %s flacfile" % argvs[0]
    quit()

flac = FLAC(argvs[1])
mp3 = EasyID3(argvs[1] + ".mp3")

for key, value in flac.iteritems():
  try:
    mp3[key] = value
  except EasyID3KeyError:
    print "%s is passed" % key

mp3.save()
print argvs[1] + ".mp3 writed"


注意点

  • easy_installでmutagenをインストールしておくこと
  • 普通にLAMEでMP3を作るとタグが無い状態のファイルができる。mutagenではタグの無いMP3ファイルは読み込めないので、lameコマンドに--add-id3v2オプションを付加すること
  • mutagen.easyid3では処理できるキーに制約がある。処理可能なキーの一覧はEasyID3.valid_keys.keys()で見られる。mutagen.id3ならば自由に編集できるようだが、ID3タグの仕様を理解していないと使えない


使い方

ubuntu:progd% cat flac2mp3.sh
#!/bin/sh

echo decoding: $1
flac --decode --stdout "$1" | lame --add-id3v2 - "$1".mp3
python tag.py "$1"

ubuntu:progd% find . -name "*.flac" -exec ./flac2mp3.sh {} \;
ubuntu:progd% find . -name "*.mp3" | perl -lne '$o=$_; s/\.flac//; rename $o,$_;'