2012-08-25 35 views
5

Python ve onun eyeD3 API'sini kullanarak bir sürü mp3 dosyasının meta verilerini güncellemeye çalışıyorum.Python + eyeD3: tarihi mp3 meta verilerine kaydetme

Oldukça basit görünüyor, kod ben görünüyor kullanıyorum şu şekilde:

ne olur
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() 

geçerli: Kod sessizce yürütür (hiçbir hata veya istisnalar), başlık doğru ayarlanmış, tarih değil kümesidir hedef dosyada. Boş kalır veya önceki değere ayarlanır (her iki durumda da kontrol edilir).

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

... ama benim çağrı Tamam olması gerektiğini söyler: setDate fonksiyonu için

Yardım eğlenceli özellikle değildir. Burada neler olduğu hakkında bir fikrin var mı?

+0

Kaynak kodu gözden geçirdikten sonra, açıkça yanlış bir şey göremiyorum. –

+0

Komut satırı gözD3'ün tam olarak aynı olduğunu keşfetti: tarihi değiştirmez, ancak herhangi bir hatayı da bildirmez. Son teslim tarihi olan Mutagen'i bu amaçla kullandım. Sanırım EyeD3'te bir yerde bir hata var. – zencodism

cevap

3

Seninkiyle aynı soruyu aldım. Son olarak, eyeD3 lib'ı terk ettim, mutagen iyi bir seçenektir.

İşte benim örneğim Python'da mutagen.mp3 kullanıyor.

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() 
İlgili konular