Помогите разобраться.
Решил перекодировать теги(из CP1251 в UTF8). Написал простенький скриптик
import pyid3lib
x=pyid3lib.tag("01-Это рок.mp3")
encoding="CP1251"
for i in x:
try:
text = i['text']
textenc = i['textenc']
frameid = i['frameid']
i['text'] = unicode(text,encoding).encode("UTF8")
i['textenc']=0
x[x.index(frameid)] = i
except Exception,details:
print details
x.update()
Скриптик пробный, поэтому много лишнего.Все перекодировалось вроде хорошо. beep воспринимает это хорошо, а вот amarok все показыват кракозябрами.
(система SuSE 9.2, locale UTF8, amarok 1.2.3). Где-то видел что надо указать кодировку, а иначе все текстовые поля воспринимаются, как ISO-8859-1. В стандарте id3v2.4.0 нашел, что байт отвечающие кодировке должен быть:
$00 - ISO-8859-1
$01 - UTF-16
$02 - UTF-16BE
$03 - UTF8
Если указать i['textenc']=3, то ни beep, ни amarok этого не воспринимают. Мне кажется, что я просто чего-то не понимаю(я вообще в этом не силен).
Незнаю питона и не могу понять в какие теги он пишет v1 или v2?
Т.к. перекодировку тегов для amarok писал я, рассказываю как она работает:
Если у тебя в настройках стоит перекодировка то из mp3 читаются id3v1 теги и перекодируются в выбранную кодировку ... v2 будут использованы только при отсутствии v1.
Если перекодировка не выставлена то amarok сначала пытается прочитать v2 (отображает как уникод), если неудалось то пытается считать v1 (отображает как iso8859-1), если тоже не получилось, то пытается разобрать имя файла!