Изменение текста песни в 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