6

Python とその eyeD3 API を使用して、多数の mp3 ファイルのメタデータを更新しようとしています。

それはかなり単純に見えます。私が使用しているコードは次のようになります。

if not eyeD3.isMp3File(filename):
    print filename, 'is not a mp3 file. Ignoring it.'
tag = eyeD3.Tag()
tag.link(filename)
tag.setVersion(eyeD3.ID3_V2)
tag.setTextEncoding(eyeD3.UTF_8_ENCODING)
tag.setTitle(dataset['Title'])
tag.setDate(datetime.datetime.now().year)
tag.update()

何が起こるか: コードはサイレントに実行され (エラーや例外なし)、タイトルは正しく設定され、日付はターゲット ファイルに設定されません。空のままか、以前の値に設定されます (両方のケースをチェック)。

setDate 関数のヘルプは特に面白いものではありません。

setDate(self, year, month=None, dayOfMonth=None, hour=None, minute=None, second=None, fid=None) unbound eyeD3.tag.Tag method

...しかし、私の電話は大丈夫だと言っています。ここで何が起こっているのか、何か考えはありますか?

4

1 に答える 1

5

私はあなたと同じ質問を受けました。最後に、私は eyeD3 lib を放棄しましたmutagen。これは良い選択肢です。

mutagen.mp3Python で使用する私の例を次に示します。

from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, TIT2, TPE1, TRCK, TALB, USLT, error
# ID3 info:
# APIC: picture
# TIT2: title
# TPE1: artist
# TRCK: track number
# TALB: album
# USLT: lyric
def id3_cook(directory, filename, item, track_num):
    pic_file = directory + '/cover.jpg' # pic file
    audio = MP3(filename, ID3=ID3)
    try:
        audio.add_tags()
    except:
        pass
    audio.tags.add(APIC(
        encoding=3,
        mime='image/jpeg',
        type=3,
        desc=u'Cover Picture',
        data=open(pic_file).read()
    ))
    audio.tags.add(TIT2(encoding=3, text=item['song'].decode('utf-8')))
    audio.tags.add(TALB(encoding=3, text=item['album'].decode('utf-8')))
    audio.tags.add(TPE1(encoding=3, text=item['artist'].decode('utf-8')))
    audio.tags.add(TRCK(encoding=3, text=str(track_num).decode('utf-8')))
    audio.tags.add(USLT(encoding=3, lang=u'eng', desc=u'desc', text=item['lyric'].decode('utf-8')))
    audio.save()
于 2012-10-23T05:50:03.313 に答える