概况
Windows Media Player 插件 Now Playing 可以轻松发布你正在播放的音乐信息。
主要有一下几种方式:
1.生成一个包含歌曲信息的XML文件,位于 Windows Media Player 插件目录,名称为now_playing.xml
2.在信息更新后将该文件上传到你的服务器
3.发送一个歌曲信息的ping通知
4.在Twitter上发布一条信息
5.在Facebook上发布一条信息
将XML文件上传到服务器后,你可以通过一些脚本来展示你现在或最近播放的音乐
为了增强互动性,该插件也会检索一下信息:
1.来自于Amazon.com的专辑封面图片url链接
2.来自于Amazon.com product page的CD链接
3.来自于Apple iTunes Music Store product page的歌曲信息(被高亮)
安装:
2.打开 Windows Media Player
3.安装后第一次打开 Windows Media Player 会出现配置(configuration)界面,填写相关信息,点击OK
4.播放一首歌曲!
配置
Options:插件的基本配置
- Publish Stop:停止播放时发送一条消息。XML里的播放列表会被清空,但是会有缓存,直到下 一次你启动Windows Media Player
- Clear Playlist:退出播放器时,可以选择保留或删除插件的播放列表记忆
- Playlist Delay:发布信息前的音乐播放时间,如果在此时间之前跳到下一首歌曲,则这一首歌曲不会被写入播放列表,也不会发布出去
- Skip Shorter Than:如果一个音乐文件的时间少于这个数值(秒),则不会被发布。如果你是在播放一些很短的音效文件,又不想发布出去,这一项会很有用。设置为0,所有音乐文件都会被发布
- Skip Kinds:跳过你不想发布的文件类型,比如电影。你可以用逗号隔开多个文件类型
- Logging:登陆后会在插件Now Playing目录下生成一个NowPlaying-Log.txt文件,你向插件作者寻求帮助时,他会让你发送这个文件
XML:有关于XML文件的一些配置
- Output File:歌曲改变时生成XML文件的地址,也是将要上传到服务器的文件。你可以使用date/time格式编码文件名,比如 %Y
- Encoding:选择XML文件的编码类型,推荐UTF-8
- XSL URL:这个URL将会插入XML文件中,不适用此功能请留空
- Wrap XML tag values with CDATA:一些歌曲的属性里有乱码,你需要小心地进行编码,根据你的分析器
- Playlist Length:你想发布到XML文件的歌曲数量
Upload:服务器 FTP/SFTP配置,确认你有上传文件的权限
- Protocol: 协议类型 FTP 或者 SFTP.
- Hostname:主机名或者 IP 地址
- Username:用户名
- Password:密码
- Filname:文件名,你可以使用 date/time格式编码文件名,比如 %Y
Ping:歌曲改变时,XML文件上传后,插件发出一个HTTP POST 请求
- URL:接受POST 请求的URL
- Extra Info:键一些值,会作为 HTTP header (叫做X-NowPlaying)发送,你可以键入一些秘密的值,使你的脚本避免被擅自使用
Twitter:插件发送一条tweet,显示你正在播放的音乐
- Enabled:开,关这个功能
- Rate Limit:两条tweets间的最短时间,一是遵守Twitter的限制,二是不要让你的follower厌烦你这个话痨
- Message:发布的歌曲信息格式,你可以使用下面列出来的歌曲标签,歌曲信息当然有Twitter的140字的限制
- Setup:获得Twitter的授权(需翻墙)。
1)点击Authorize,启动浏览器,同意 Now Playing
2)从Twitter 得到 PIN 码,填入
3)点击Verify
4)你的Twitter用户名将会出现在那里,并且有一个 Reset(重置)的按钮
Facebook:更新你的Facebook状态,或者新的feed
- Enabled:开,关这个功能
- Rate Limit:两条状态间的最短时间,一是遵守Facebook的限制,二是不要让你的朋友厌烦你这个话痨
- Post to:选择发布到状态还是feed,feed条目会显示来自Amazon的专辑
- Message:发布的歌曲信息格式,你可以使用下面列出来的歌曲标签
- Description:发布feed条目时你想要添加的描述,你可以使用下面列出来的歌曲标签。当发布到状态时不会应用此项
- Setup:三步获得Facebook的授权
Amazon:插件向Amazon请求一些歌曲信息,比如链接和专辑封面
- Enabled:开,关这个功能
- Locale:Amazon网站选择,US 美国,ca 加拿大,uk 英国,de 德国,jp 日本
- Associate ID:会员编号,如果用户通过你的链接购买,你可以获得推荐费(referral fees)
- ASIN Hint:由于Amazon的某些专辑搜索有些古怪,你可以定制你想要匹配的某张专辑。(WMP10或更低:music category description;WMP11或更高:Subgenre)
Apple:插件向苹果音乐商店请求一些音乐信息,比如链接
- Enabled:开,关这个功能
- Affiliate ID:会员编号,加入Apple iTunes Affiliate,用户通过你的链接购买音乐,你会获得一些佣金
License:购买
架构
XML文件,超过一首歌曲的话,会有多个song标签
<?xml version="1.0" encoding="UTF-8"?> <now_playing playing="1" timestamp="2004-05-24T23:12:46-07:00"> <song timestamp="2004-05-24T23:12:46-07:00"> <title>Faint</title> <artist>Linkin Park</artist> <album>Meteora</album> <genre>Rock</genre> <kind>MPEG audio file</kind> <track>7</track> <year>2003</year> <comments>I like it.</comments> <time>162</time> <bitrate>128</bitrate> <rating>4</rating> <playcount>2</playcount> <compilation>No</compilation> <urlAmazon>http://www.amazon.com/...</url> <urlApple>http://phobos.apple.com/...</url> <imageLarge>http://images.amazon.com/...jpg</imageLarge> <image>http://images.amazon.com/...jpg</image> <imageSmall>http://images.amazon.com/...jpg</imageSmall> <composer>Brandon Fuller</composer> <grouping></grouping> <urlSource></urlSource> </song> </now_playing>
XML文件解析
<?php $file = "now_playing.xml"; $xml_parser = xml_parser_create(); if ( is_file( $file ) ) { $fp = fopen( $file, "r" ); $data = fread( $fp, filesize( $file ) ); fclose( $fp ); xml_parse_into_struct( $xml_parser, $data, $vals, $index ); xml_parser_free( $xml_parser ); if ( $debug ) { echo "<pre>"; echo "Index array\n"; print_r($index); echo "\nVals array\n"; print_r($vals); echo "</pre>\n\n"; } if ( $vals[ $index["NOW_PLAYING"][0] ]["attributes"]["PLAYING"] == 1 ) { foreach ( $index["TITLE"] as $i => $j ) { $title = $vals[ $index["TITLE"][$i] ]["value"]; if ( strlen( $title ) > 0 ) { $artist = $vals[ $index["ARTIST"][$i] ]["value"]; $album = $vals[ $index["ALBUM"][$i] ]["value"]; $genre = $vals[ $index["GENRE"][$i] ]["value"]; $kind = $vals[ $index["KIND"][$i] ]["value"]; $track = $vals[ $index["TRACK"][$i] ]["value"]; $year = $vals[$index["YEAR"][$i] ]["value"]; $comments = $vals[ $index["COMMENTS"][$i] ]["value"]; $time = $vals[ $index["TIME"][$i] ]["value"]; $bitrate = $vals[ $index["BITRATE"][$i] ]["value"]; $rating = $vals[ $index["RATING"][$i] ]["value"]; $playcount = $vals[ $index["PLAYCOUNT"][$i] ]["value"]; $compilation = $vals[ $index["COMPILATION"][$i] ]["value"]; $urlamazon = $vals[ $index["URLAMAZON"][$i] ]["value"]; $urlapple = $vals[ $index["URLAPPLE"][$i] ]["value"]; $imagesmallurl = $vals[ $index["IMAGESMALL"][$i] ]["value"]; $imageurl = $vals[ $index["IMAGE"][$i] ]["value"]; $imagelargeurl = $vals[ $index["IMAGELARGE"][$i] ]["value"]; $composer = $vals[ $index["COMPOSER"][$i] ]["value"]; $grouping = $vals[ $index["GROUPING"][$i] ]["value"]; $urlsource = $vals[ $index["URLSOURCE"][$i] ]["value"]; echo "Now Playing is " . $title . " by " . $artist; } } } else { echo "Now Playing is stopped."; } } ?>
不懂PHP的小白(比如我),可以下载这个压缩文件进行一些自定义:
1.将文件解压,上传到支持PHP的服务器
2.将图片移至 /imges
3.在你想显示音乐的网页插入以下代码
<script type="text/javascript" src="http://yourserver.com/now_playing.php"></script>
下载
Now Playing for Windows Media Player Installer (2.19 MB)
MD5: 81DF7DAB9C6AB61D39A165BF134CDE7B
PS:这篇翻译的好累啊,最长的一篇博客了。有一些稍专业的词可能不够准确,还望指出,以便更改
已经有36条评论
先沙发后文章
这篇文章是太长了…
太复杂 不会玩儿 (han)
看着复杂,其实很简单的,我只用了发送到twitter
又有新鲜玩意儿啦~
嘿嘿,主要是看中了发送到twitter的功能
不过要墙出去。。。。 (ciya)
翻墙是必备技能 (touxiao)
有一个问题想问~你用的评论回复插件是什么?
之前用的是mail to commenter,换这个主题后那个不管用了,现在用Comment Reply Notification
我晕,难道是因为我的wordpress版本问题,你是多少版的,我是2.9.2
我也是啊..有问题?以前我也收到过你的回复邮件通知啊
好长的文章。。好详细。。
呃。。好像现在还用不着~~感觉用处不是很大~没有这方面的需求。~
跟twitter有关的我都很感兴趣,嘿嘿
没接触过这个的来顶一顶,哈哈 (ciya)
谢谢哈
兄弟真厉害,设置好复杂居然也能搞定~~~
(weixiao) 其实很简单滴
写得可真够详细的啊,厉害
翻译的,累死我了
影片必须跳过,要是把一些不该发送的信息发送了岂不是很~
可以设置排除某些格式,所以把一些视频格式排除就行了。或者看视频时不启用功能就行了
这个也行?
以前不知道呢
我也是刚知道,有什么需求网上搜一搜就行了。善用搜索哦 (weixiao)
墙内能发送到twitter不,莫非可以自定义API
我机子上修改了hosts,是可以的。不修改我就不知道了,可以试一试
这要是听一下午歌,twitter上不是泛滥成灾了啊
偶尔发一个就行了,可以启用或关闭 (ciya)
可惜TWITTER要代理~~郁闷、
不用代理也可以哟,有很多其他网页端和桌面端
我twitter上没什么人呢
多和别人互动一下,嘿嘿
好牛,够专业
我只是翻译了一下,原作者才牛呢
平常不用WMP听歌。。。。 (weixiao)
我也是,常用FB2K