<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar/8638045102788407707?origin\x3dhttp://micro1o.blogspot.com', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

About|关于

"。。 == ||"

修改基于glibc的程序

  Ubuntu下面喜欢使用mpd(Music Player Daemon)播放歌曲,由于这是一个C/S的音乐播放程序,一个好用的播放客户端必不可少。

  最初使用的是Sonata(用Python语言编写),这个播放客户端界面简洁,功能满足要求,能够修改音乐的标签,但是有一个缺点,对于需要代理访问因特网的用户无法更新专辑封面、歌词等信息。检查充分使用Google,搜索发现Python支持使用系统环境变量http_proxy的代理设置访问因特网,于是自己修改了部分代码(使用urllib2访问因特网的部分),可是测试使用的时候总是不起作用。后来想通过在终端运行看看是否有出错的信息,出人意料竟然能访问因特网了,这个现象也太奇怪了,实在搞不懂是怎么一回事??

  接着找到了gimmix,为了编译最新版本安装了一堆包(太惨了,网站上的编译说明和源码包中的还不一致,nxml这个包其实是libnxml,费了很长时间才搞定)。使用中也是无法使用代理,而且没法显示音乐目录下面的专辑封面图片(在windows下面搜集了不少itunes/amazon/allcdcovers的专辑封面),毫不犹豫删除了。

  最后看到一篇论坛帖子介绍mpd的客户端,推荐了Sonata和gmpc(Gonme Music Player Client),于是在launchpad找到了开发者自身编译的gmpc包安装到系统中。使用后感觉不错,尤其是支持代理访问因特网。优点如下:
  • 支持插件,通过插件实现如下功能:搜索本地专辑封面、歌词;获取amazon上的专辑封面;获取last.fm上面的艺术家信息、图片;获取lyricwiki、leoslyric等上面的歌词(纯歌词,不是lrc歌词)等等。
  • Metadata Browser功能强大,充分利用插件获取的last.fm的相关信息。
  确定使用gmpc作为播放客户端后,就想能否修改一下满足自身的要求。搜索本地专辑封面的插件Music Dir Fetcher虽然可以搜索到播放音乐文件所在目录下面的图片,但对于有多张图片(包括专辑封面、光盘封面、小册子扫图等)不能按照喜好定义选择哪一张,用下来感觉像随机选取。阅读这个插件的源代码(只有单个c文件)后,知道插件是用正则表达式匹配图片文件,选取匹配的第一个文件作为专辑图片,如果没有匹配的,使用目录下面的第一个图片文件。插件考虑兼容性,将匹配的表达式定义为:
(voorkant|front|cover|large|folder|booklet)
因此,我想能不能给一个自定义项用于匹配,在插件处理专辑图片时先用用户自定义的进行匹配,这样即不破坏原插件的功能,又能让插件按照用户习惯选择正确的专辑图片。为插件增加这个功能,用Google搜索了不少关于GTK+界面编程、glibc函数等信息:
  学习了半天,终于修改成功,已经编译到gmpc下正常使用。在Music Dir Fetcher界面增加Cover Filename一个自定义项,可以使用正则表达式,比如我自己设定成(itunes|amazon),因为我的专辑图片一般将来源放在图片文件名开头([itunes] xxx.jpg、[amazon] xxx.jpg)。


相关信息
  • gmpc作者的第三发软件源,目前gmpc版本0.16.1,比ubuntu中的版本高不少,同时包含插件的最新版本
    deb http://ppa.launchpad.net/qball-qballcow/ubuntu intrepid main

标签: , , , ,

You can leave your response or bookmark this post to del.icio.us by using the links below.
Comment | Bookmark | Go to end