Получить текст из mp3-файла на Python, используя eyeD3

В настоящее время я пытаюсь использовать Python и его библиотеку eyeD3 для извлечения текста из mp3-файла. Текст песни уже встроен в mp3-файл (через: MusicBee). Я пытаюсь использовать eyeD3, чтобы вернуть текст. Я не могу понять, как это сделать. Я много искал в Интернете, и все, что я нашел, это учебники, показывающие, как УСТАНОВИТЬ текст. Я просто хочу прочитать их из файла. Вот мой текущий код:

track = eyed3.load(path)
tag = track.tag
artist = tag.artist
lyrics = tag.lyrics

Artist возвращает имя исполнителя правильно, но текст возвращает следующее:

<eyed3.id3.tag.LyricsAccessor object at 0x27402d0>

Как я могу просто вернуть сырой текст песни, встроенный в mp3? Это возможно?

Большое спасибо в продвинутом.

3 ответа

Решение

Похоже, это итератор. Пытаться

tag.lyrics[0]

или же

for lyric in tag.lyrics:
  print lyric

в крайнем случае распечатайте каталог объектов и найдите полезные функции

print dir(tag.lyrics)

Это работает для меня:

tag.lyrics[0].text
u"".join([i.text for i in tag.lyrics])

DonJuma, Python говорит вам:

<iterator object at hex_location> 

Вы можете попробовать следующее, но это не работает на строках

hasattr(myObj, '__iter__')

пользователь:mindu объясняет здесь, что вы можете написать надежную функцию, которая проверяет

try:
    some_object_iterator = iter(some_object)
except TypeError, te:
    print some_object, 'is not iterable'

НО!!! Это не Pythonic. Python верит в Duck Typing, который в основном говорит: "Если он выглядит как утка и крякает как утка, значит, это утка". Смотрите ссылку для получения дополнительной информации.

Другие вопросы по тегам