Python - Добавете ID3 тагове към mp3 файл, който няма тагове

Получавам много подкасти, които нямат ID3 тагове в тях. Опитах редица инструменти, които бих могъл да използвам, за да превъртя директории и да добавя информация за заглавие и изпълнител към ID3 таговете, но те се провалят. Опитах ID3, eyed3 и mutagen. През повечето време, ако даден файл няма ID3 таг, тези модули се провалят.

Може ли някой да препоръча добра библиотека за редактор на ID3 етикети, която ще работи чрез цикли? Какво още трябва да знам за редактиране/добавяне на ID3 тагове, когато те са 100% празни? Става разочароващо да опитвате библиотека след библиотека само за да откриете, че проблемът остава.

Благодаря ти.


person Tensigh    schedule 21.08.2013    source източник


Отговори (1)


Mutagen се справя добре с това:

>>> import mutagen
>>> from mutagen.easyid3 import EasyID3
>>> filePath = "8049.mp3"

>>> try:
>>>    meta = EasyID3(filePath)
>>> except mutagen.id3.ID3NoHeaderError:
>>>    meta = mutagen.File(filePath, easy=True)
>>>    meta.add_tags()
>>> meta
{}
>>> type(meta)
<class 'mutagen.easyid3.EasyID3'>
>>> meta['title'] = "This is a title"
>>> meta['artist'] = "Artist Name"
>>> meta['genre'] = "Space Funk"
>>> meta.save(filePath, v1=2)
>>> changed = EasyID3("8049.mp3")
>>> changed
{'genre': [u'Space Funk'], 'title': [u'This is a title'], 'artist': [u'Artist Name']}
person bgporter    schedule 22.08.2013
comment
Ще опитам това; когато ги поставих в цикъл, не се получи първия път. - person Tensigh; 22.08.2013
comment
Съжалявам, натискам return и публикува коментарите. Когато направих първия ред, meta = EasyID3(file) се казва: mutagen.id3.ID3NoHeaderError: 'musicfile.mp3' не започва с ID3 таг - person Tensigh; 22.08.2013
comment
Да, трябваше да прочета ЧЗВ. Имайте предвид, че работя по този проект от около 3 дни подред, така че нивото на четене намалява с нарастването на разочарованието. Добре, вече мога да чета/създавам ID3 тагове с помощта на мутаген. Сега има само един проблем; ID3 таговете са невидими в Windows Explorer. Видях, че мога да използвам v1=2 или нещо подобно, когато записвам, но те все още са невидими. Някакви улики? - person Tensigh; 22.08.2013
comment
Кодът по-горе не работи. Когато поставям оператора за опит/изключение, получавам това: Traceback (последното последно извикване): Файл ‹stdin›, ред 3, в ‹module› NameError: името „mutagen“ не е дефинирано И да, НАПРАВИХ импортна линия. - person Tensigh; 22.08.2013
comment
Съжалявам, току-що го направих отново, като използвах from mutagen import * - person Tensigh; 22.08.2013
comment
Много благодаря. Просто накарах всичко да работи. Промених meta.save() на meta.save(filepath, v1=2) и получих точния резултат, от който се нуждаех. Много благодаря. Документацията на Mutagen не е толкова добра, така че помощта ви тук е високо оценена. Ако беше в Токио, щях да те почерпя с бира! - person Tensigh; 22.08.2013
comment
Трябваше да добавя импортиран мутаген, за да заработи изключението. - person SabreWolfy; 22.10.2014