我正在尝试修复 ID3 标签的编码,以便我Nokia Lumia 630
的 with windows 8
onboard 可以正确显示西里尔字母。我正在这样做mutagen
:
# -*- coding: utf-8 -*-
import os
import mutagen.id3
for path in [u'Sergei Babkin - Aleksandr [pleer.com].mp3']:
id3 = mutagen.id3.ID3(path)
for key, value in id3.items():
if key in ['TIT2', 'TPE1']:
value.text = [u'тест']
value.encoding = 1
id3.save()
最初,某些歌曲可以正确显示。经过我的实验,即使是那些现在也没有可读的名称。但变化不大。即,mid3v2
的输出是这样的:
$ mid3v2 --list-raw Sergei\ Babkin\ -\ Aleksandr\ \[pleer.com\].mp3
Raw IDv2 tag info for Sergei Babkin - Aleksandr [pleer.com].mp3
TYER(encoding=1, text=[u'2007'])
TIT2(encoding=1, text=[u'\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440'])
USLT(encoding=0, lang='eng', desc=u'', text=u' ')
TRCK(encoding=1, text=[u'9'])
TPE1(encoding=1, text=[u'\u0421\u0435\u0440\u0433\u0435\u0439 \u0411\u0430\u0431\u043a\u0438\u043d'])
TALB(encoding=1, text=[u'\u041c\u043e\u0442\u043e\u0440'])
TCON(encoding=1, text=[u'(12)Other'])
(这就是我value.encoding = 1
在脚本中设置的原因,但我也尝试了编码3
。)现在是这样的:
$ mid3v2 --list-raw Sergei\ Babkin\ -\ Aleksandr\ \[pleer.com\].mp3
Raw IDv2 tag info for Sergei Babkin - Aleksandr [pleer.com].mp3
TDRC(encoding=0, text=[u'2007'])
TIT2(encoding=1, text=[u'\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440'])
USLT(encoding=0, lang='eng', desc=u'', text=u' ')
TRCK(encoding=1, text=[u'9'])
TPE1(encoding=1, text=[u'\u0421\u0435\u0440\u0433\u0435\u0439 \u0411\u0430\u0431\u043a\u0438\u043d'])
TALB(encoding=1, text=[u'\u041c\u043e\u0442\u043e\u0440'])
TCON(encoding=1, text=[u'Other'])
不知道会发生什么变化TCON
。此外,mp3info
现在说:
$ mp3info Sergei\ Babkin\ -\ Aleksandr\ \[pleer.com\].mp3
File: /home/yuri/Downloads/music/бабкин/Sergei Babkin - Aleksandr [pleer.com].mp3
Title: ???? Track: 9
Artist: ????
Album: ????? Year: 2007
Comment: Genre: Other [12]
它在使用前显示西里尔字母mutagen
。
那么,有没有办法找出 ID3 标签中内容的确切编码?你能知道如何使它工作吗?我究竟做错了什么?
UPD我有一个 mp3 文件,我的手机可以正确显示。有什么提示吗?