lishuomountain / gmbox

Automatically exported from code.google.com/p/gmbox
0 stars 0 forks source link

mid3utf8那块 #17

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
现在使用的是外部程序。但是mid3iconv只解析text 
frame,所以有些应该是不能转换
的。受影响的应该包括COMM, USLT。建议直接使用mutagen.id3。
由于保存了id3tav1, 
而linux下的播放器会优先读取tagv2,当然可以设选项是否加上
tagv1

from mutagen.id3 import ID3

id3 = ID3(filename)

# tagv1 = id3v1(filename) #获取128字节,id3tagv1
def conv(encode):
  return encode.encode('iso-8859-1').decode('gbk')

for tag, value in id3.iteritems():
  # 所有 text 都是有 encoding 的
  if not 'text' in dir(value):
    continue

  if value.encoding == 0: # really iso-8859-1?
    if isinstance(value.text, list): # does tuple exist?
      text = map(conv, value.text)
    else: # USLT 是直接 unicode, 而不是 list
      text = conv(value.text)
    if text != value.text:
      value.text = text # 主要是中文,转换后不一样
      value.encoding = 3 # 这个很重要。呵呵
    else:
      value.encoding = 1 # 不转换,但是把编码设为utf16

id3.save(filename, v1=0)
最后可写回id3tagv1

这是我写的一个脚本,处理指定文件和目录的mp3文件
有兴趣可以一看
http://thom.nklog.org/tmp/mid3tag.py

Original issue reported on code.google.com by hany...@gmail.com on 22 Jul 2009 at 4:13

GoogleCodeExporter commented 8 years ago
恩,这个迟早是要改的~ 不过可能优先级会低一点点~

Original comment by bones7...@gmail.com on 23 Jul 2009 at 1:19

GoogleCodeExporter commented 8 years ago
我也写了个解析地址的类,现在只写了search, album, 
单曲三个类。

看别人写的代码,怎么也看不懂。当自己写好,再看时,还��
�看不懂。
我太没有程序员素养了。

这次忍住没用re模块。

Original comment by hany...@gmail.com on 23 Jul 2009 at 2:46

GoogleCodeExporter commented 8 years ago
Issue 18 has been merged into this issue.

Original comment by muzuiget on 7 Dec 2010 at 1:10