WMP插件:Now Playing-向Twitter等发送正在播放的歌曲

概况  安装  配置  架构  下载

概况

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的歌曲信息(被高亮)

 

安装

1.下载并安装 Now Playing 插件

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条评论

    • Jason Chao

      看着复杂,其实很简单的,我只用了发送到twitter

    • Jason Chao

      之前用的是mail to commenter,换这个主题后那个不管用了,现在用Comment Reply Notification

      • 我晕,难道是因为我的wordpress版本问题,你是多少版的,我是2.9.2

        • Jason Chao

          我也是啊..有问题?以前我也收到过你的回复邮件通知啊

  1. 好长的文章。。好详细。。
    呃。。好像现在还用不着~~感觉用处不是很大~没有这方面的需求。~

    • Jason Chao

      可以设置排除某些格式,所以把一些视频格式排除就行了。或者看视频时不启用功能就行了

    • Jason Chao

      我也是刚知道,有什么需求网上搜一搜就行了。善用搜索哦 (weixiao)

    • Jason Chao

      我机子上修改了hosts,是可以的。不修改我就不知道了,可以试一试

    • Jason Chao

      偶尔发一个就行了,可以启用或关闭 (ciya)

    • Jason Chao

      不用代理也可以哟,有很多其他网页端和桌面端