Автор Гілка: python mutagen id3v1 ?  (Прочитано 6442 раз)

Відсутній tarasian666

  • Графоман
  • ****
  • дописів: 464
  • Карма: +0/-0
  • нульовий біт це також біт
python mutagen id3v1 ?
« : 2012-12-30 10:01:08 »
Порадьте якийсь модуль для пітона щоб міг читати всі ID3 теги, а то мутаген не читає v1
Пробував ще eyeD3 і ще щось але там ситуація ще гірша
з Perl таких проблем не було...
Kernel alive - куди поділи цю "фразу" в новому ядрі?

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: python mutagen id3v1 ?
« Відповідей #1 : 2012-12-30 13:01:26 »
Порадьте якийсь модуль для пітона щоб міг читати всі ID3 теги, а то мутаген не читає v1
Пробував ще eyeD3 і ще щось але там ситуація ще гірша
з Perl таких проблем не було...

Пишуть що читає. :-/ Може ви потім не перекодовуєте отриманий рядок у UTF-8?

Код: Python
  1. #!/usr/bin/python
  2. from mutagen.easyid3 import EasyID3
  3. import glob
  4.  
  5. for name in glob.glob('*.mp3'):
  6.   audio = EasyID3(name)
  7.   print "name: ", name, "title: ", audio["title"][0].encode("ISO-8859-1").decode("WINDOWS-1251")
  8.  
  9.  
[Fedora Linux]

Відсутній tarasian666

  • Графоман
  • ****
  • дописів: 464
  • Карма: +0/-0
  • нульовий біт це також біт
Re: python mutagen id3v1 ?
« Відповідей #2 : 2012-12-30 13:28:26 »
не перекодовую, просто намагаюсь зчитати, а вже потім буде вноситись у базу

навіть коли пробую з командного рядка через  mutagen-inspect
один трек читає інший ні

-- /var/www/music/Drudkh/03-Archaic Dance.mp3
- MPEG 1 layer 3, 320000 bps, 44100 Hz, 208.75 seconds (audio/mp3)

-- /var/www/music/Drudkh/03 - Drudkh - Sunwheel.mp3
- MPEG 1 layer 3, 192000 bps, 44100 Hz, 528.68 seconds (audio/mp3)
TDRC=2004
TIT2=Sunwheel
TRCK=3
TPE1=Drudkh
TALB=Autumn Aurora
TCON=Metal

при тому що всі дані там на латиниці, коли відкриваю через vlc то все нормально читає
« Змінено: 2012-12-30 13:32:26 від tarasian666 »
Kernel alive - куди поділи цю "фразу" в новому ядрі?

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: python mutagen id3v1 ?
« Відповідей #3 : 2012-12-30 17:52:49 »
Напевно теги записані криво. VLC вміє обробляти цю помилку а мутаген — ні. :-/
[Fedora Linux]

Відсутній tarasian666

  • Графоман
  • ****
  • дописів: 464
  • Карма: +0/-0
  • нульовий біт це також біт
Re: python mutagen id3v1 ?
« Відповідей #4 : 2012-12-31 09:03:13 »
Ну зокрема перл і пхп читали теги в тих файлах добре, в перлі користувався "вбудованим" модулем, в пхп самописний скрипт і id3lib
Як не крути бачу тим же мутагеном прийдеться вносити теги де їх не бачить, надіюсь їх вийде не багато
Kernel alive - куди поділи цю "фразу" в новому ядрі?

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: python mutagen id3v1 ?
« Відповідей #5 : 2012-12-31 13:54:58 »
Ще подивіться ці два звіти:

http://code.google.com/p/mutagen/issues/detail?id=98 (Можливо два теги ID3 присутні: ID3v2.x на початку і ID3v1.x у кінці).

http://code.google.com/p/mutagen/issues/detail?id=78 (ID3v2.x записаний у кінці файлу замість початку).
[Fedora Linux]

Відсутній tarasian666

  • Графоман
  • ****
  • дописів: 464
  • Карма: +0/-0
  • нульовий біт це також біт
Re: python mutagen id3v1 ?
« Відповідей #6 : 2013-01-01 17:54:30 »
нарешті найшов як піймати в мутагені помилку, ось що видає mutagen.id3.error
KeyError: 'TPE1'
Схоже там id3v2 теги були присутні але пусті

Виявляється в мене ціла купа файлів де хоча б 1 тег був таким щоб не подобався мутагену, прискіпливий такий гад

може якось можна ним пропускати такі помилки, а не стопоритися? робити try на кожен тег не вихід...
« Змінено: 2013-01-01 23:11:39 від tarasian666 »
Kernel alive - куди поділи цю "фразу" в новому ядрі?

Відсутній tarasian666

  • Графоман
  • ****
  • дописів: 464
  • Карма: +0/-0
  • нульовий біт це також біт
Re: python mutagen id3v1 ?
« Відповідей #7 : 2013-01-24 19:20:59 »
Може комусь знадобиться:

щоб не ступорився пітон на помилці спочатку робимо масив з ключами потрібних нам тегів та пустими значеннями
tags = {"artist":"", "album":"", "title":"", "date":"", "genre":""}
а потім заповнюємо наш масив значеннями якщо вони існують
audio = mutagen.File("файл.mp3", easy=True)
for tag in audio:
    tags[tag] = audio.get(tag)[0]
і тоді вже витягуємо все з створеного нами масиву. Інакше, наприклад як в мене, коли всі отримані теги вносяться в базу, може не занестись взагалі нічого.

PS Що на перлі, що на пхп (і ще багато де)  такі танці не потрібні... а тут складається враження що ця зміюка може здохнути від маленького жука )
« Змінено: 2013-01-24 19:29:58 від tarasian666 »
Kernel alive - куди поділи цю "фразу" в новому ядрі?