[英]Python + eyeD3: cannot save date to mp3 metadata
我正在嘗試使用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
...但告訴我,我的電話應該沒問題。 有什么想法在這里發生了什么?
我和你的問題一樣。 最后,我放棄了eyeD3 lib下, mutagen
是一個不錯的選擇。
這是我在Python中使用mutagen.mp3
例子。
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.