Изменение текста песни в MP3-файле через eyeD3

Я пытаюсь создать программу на Python, которая автоматически получает тексты песен для определенной папки MP3. [Я получаю тексты от http://azlyrics.com/]

До сих пор я преуспел в том, чтобы делать все, кроме фактического встраивания текстов в тег "текст".

Вы ответили на вопрос, касающийся чтения текстов из этого тега здесь.

Мне было интересно, не могли бы вы помочь мне с настройкой текста. Вот мой код

import urllib2 # For downloading webpage
import time # For pausing
import eyed3 # For MP3s
import re # For replacing characters
import os # For reading folders


path = raw_input('Please enter folder of music') # TODO Must make GUI PATH SELECTION


files = os.listdir(path) 
for x in files:
    # Must make the program stop for a while to minimize server load
    time.sleep(3)
    # Opening MP3
    mp3 = eyed3.load(path + '/' + x)
    # Setting Values
    artist = mp3.tag.artist.lower()
    raw_song = str(mp3.tag.title).lower()
    song = re.sub('[^0-9a-zA-Z]+', '', raw_song) #Stripping songs of anything other than alpha-numeric characters
    # Generating A-Z Lyrics URL
    url = "http://www.azlyrics.com/lyrics/" + artist + "/" + song + ".html"
    # Getting Source and extracting lyrics
    text = urllib2.urlopen(url).read()
    where_start = text.find('<!-- start of lyrics -->')
    start = where_start + 26
    where_end = text.find('<!-- end of lyrics -->')
    end = where_end - 2
    lyrics = unicode(text[start:end].replace('<br />', ''), "UTF8")
    # Setting Lyrics to the ID3 "lyrics" tag
    mp3.tag.lyrics = lyrics ### RUNNING INTO PROBLEMS HERE
    mp3.tag.save()

Я сталкиваюсь со следующей ошибкой после выполнения 2-ой последней строки:-

Traceback (most recent call last):
File "<pyshell#62>", line 31, in <module>
mp3.tag.lyrics = lyrics
AttributeError: can't set attribute

Я также хотел бы, чтобы вы знали, что мне 15 лет, и я изучаю Python уже около года. Я искал везде и пытался все, но я думаю, что мне нужна помощь сейчас.

Заранее спасибо за вашу помощь!

2 ответа

Я не притворяюсь, что понимаю, почему это так, но проверь, как лирика установлена ​​в удобном файле примера:

from eyed3.id3 import Tag

t = Tag()
t.lyrics.set(u"""la la la""")

Я полагаю, что это связано с лирикой, помещаемой в кадры, но другим, возможно, придется внести в нее исправления. Обратите внимание, что это не удастся, если вы не передадите его в Юникоде.

ЧКП 65001

eyeD3 - кодирование utf8 - добавление текстов песен "001-001.txt" 001-001.mp3

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