LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: aiyi

使用指南:好用的播放器mpd [解决乱码问题]

[复制链接]
发表于 2006-10-31 12:43:50 | 显示全部楼层
谢谢,你的脚本只是根据“歌手-曲名.mp3”这样的文件写入id3v1的吧,id3v2或id3v3呢,不了解这方面的东西,或者的有可无吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-31 13:07:56 | 显示全部楼层
Post by 线头
谢谢,你的脚本只是根据“歌手-曲名.mp3”这样的文件写入id3v1的吧,id3v2或id3v3呢,不了解这方面的东西,或者的有可无吗


是的,脚本是根据“歌手-曲名.mp3"这样的文件名写入id3v1的,因为我只是用他来修正一下mp3文件以适应mpd。最新版的mpd在存在id3v2的情况下就不读id3v1了,而我写入的id3v2在mpd里总是不能被正确识别,想必也是编码的问题(mpd.conf里有设置id3v1的编码但没有id3v2的,估计是这个原因),于是我就干脆只写id3v1了。

如果你有需要的话,可以把这个脚本再修改一下让它更灵活一些。
回复 支持 反对

使用道具 举报

发表于 2006-10-31 13:15:57 | 显示全部楼层
Post by aiyi
如果你有需要的话,可以把这个脚本再修改一下让它更灵活一些。

呵呵,不会呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-31 13:19:19 | 显示全部楼层
Post by 线头
呵呵,不会呀

呵呵,那我稍候修改了再发出来吧:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-31 13:57:53 | 显示全部楼层
修改了下脚本,参数如下:
Usage: /opt/bin/repairid3 [OPTION] destdir
Repair id3 info according to filename in format of'artist-title.mp3'.
  
  -h --help         show this help message.
  -1 --id3v1        write id3v1 tag only(by default).
  -2 --id3v2        write id3v2 tag only.
  -b --both         write both id3v1 and id3v2

例子:
repairid3 songs 重写songs目录下mp3文件id3v1标签(删除id3v2)
repairid3 -1 songs 重写songs目录下mp3文件id3v1标签(删除id3v2)
repairid3 -2 songs 重写songs目录下mp3文件id3v2标签(删除id3v1)
repairid3 -b songs 重写songs目录下mp3文件id3v1和id3v2标签

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2006-11-2 14:19:42 | 显示全部楼层
#!/usr/bin/python
#coding=utf8

import sys
import os

count = 0
def repair(args, dir, files):
    for f in files:
        name, ext = os.path.splitext(f)
        artist, title = name.split('-')
        artist = artist.decode('utf8').encode('gbk')
        title = title.decode('utf8').encode('gbk')
        fullpath = os.path.join(dir, f)
        os.system('id3v2 -1 -a "%s" -t "%s" -A "" -c "" "%s"' %(artist, title, fullpath))
        os.system('id3v2 -d "%s"' %fullpath)

os.path.walk(sys.argv[1], repair, None)
用了这个脚本改过的mp3在xmms下显示不正常(xmms里有v2信息却被禁,v1不禁却没有信息,playlist里也显示不了标签),glurp等mpd的clients可以正常显示。
但id3v2 -l mp3显示的标签却不正常了
# locale
LANG=en_US.UTF-8
LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE=en_US.UTF-8
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-2 14:54:51 | 显示全部楼层
Post by 线头
用了这个脚本改过的mp3在xmms下显示不正常(xmms里有v2信息却被禁,v1不禁却没有信息,playlist里也显示不了标签),glurp等mpd的clients可以正常显示。
但id3v2 -l mp3显示的标签却不正常了


我很久没有使用过xmms了,现在也无法测试,我说一下我的一些猜测吧:
这个脚本是写入的id3v1信息是gbk编码的,不知道xmms里面有没有相关的设置id3编码的地方,比如我安装的audacious播放器,就有类似的设置(附图)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2006-11-2 15:40:51 | 显示全部楼层
这个脚本是写入的id3v1信息是gbk编码的,不知道xmms里面有没有相关的设置id3编码的地方
没有,只是可以查看mp3的标签吧了
回复 支持 反对

使用道具 举报

发表于 2006-11-2 15:51:19 | 显示全部楼层
id3v1根本没有考虑过国际化,事实只限于ascii,播放器一般根据系统locale,代码页假定其编码。更进一步的hacking就是强制以某种编码读取,就像audacious那样。
回复 支持 反对

使用道具 举报

发表于 2006-11-2 20:26:43 | 显示全部楼层
bmp 里就可以选编码。

要我说,还是用软件把 tag 全部转化成 v2.4 utf8 的,一劳永逸。如果大家都不支持,那么标准也就没有什么存在的价值了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表