微信公众平台开发(33)在线点歌/在线音乐

原文: http://www.cnblogs.com/imaker/p/5491433.html

微信公众平台在年前开放了新的消息接口-音乐消息,这是广大微信公众平台开发者的福音。
根据这一功能,如果能做出在微信中点歌功能,那么我们以后就可以不用安装其他APP,
直接在微信里面关注一个账号,就可以听歌了,还省去了安装的麻烦,而且不用再占用空间。如果音乐资源足够好,那将秒杀一切手机上在线听歌软件也不是没有可能的。


一、获取音乐资源

调用方法:

<a href= "http://api2.sinaapp.com/search/music/?appkey=0020130430&appsecert=fa6095e1133d28ad&reqtype=music&keyword" >http://api2.sinaapp.com/search/music/?appkey=0020130430&appsecert=fa6095e1133d28ad&reqtype=music&keyword</a>=歌曲名称

  返回格式:与微信音乐格式类似,json型:

 

{
     "errcode" : 0,
     "msgtype" : "music" ,
     "music" : {
         "title" : "歌曲名称" ,
         "description" : "music" ,
         "musicurl" : "音乐地址" ,
         "hqmusicurl" : "音乐地址"
     }
}

失败时返回文本信息

{
     "errcode" : "1" ,
     "msgtype" : "text" ,
     "text" : {
         "content" : "检索音乐失败!"
     }
}

  

二、封装音乐消息

获取该音乐消息的代码如下:

public  string  GetMusic( string  MusicName)
        {
            WebClient MyWebClient = new  WebClient();
            MyWebClient.Credentials = CredentialCache.DefaultCredentials; //获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。
 
            Byte[] Comp = MyWebClient.DownloadData( "http://api2.sinaapp.com/search/music/?appkey=0020130430&appsecert=fa6095e1133d28ad&reqtype=music&keyword="  + MusicName); //获取快递公司数据
            var  pageHtml = Encoding.UTF8.GetString(Comp); //如果获取网站页面采用的是UTF-8,则使用这句
            JavaScriptSerializer js = new  JavaScriptSerializer();
            var  obj = js.DeserializeObject(pageHtml);
            Dictionary< string , object > dic = obj as  Dictionary< string , object >;
            if  (dic[ "errcode" ].ToString() == "0" )
            {
                Dictionary< string , object > dic2 = dic.Values.ToArray()[2] as  Dictionary< string , object >;
                string  title = dic2[ "title" ].ToString();
                string  musicurl = dic2[ "musicurl" ].ToString();
                string  hqmusicurl = dic2[ "hqmusicurl" ].ToString();
                return  ResponseMusicMsg(title, "按住可转发好友,播放失败请换首歌!" , musicurl, hqmusicurl);
            }
            else  {
                return  ResponseText( "[流泪] Sorry~ 你要的音乐我没有找到~ [流泪]" );
            }
           
        }

  

生成微信相对应的xml

/// <summary>
        /// 回复音乐内容
        /// </summary>
        /// <param name="to">接收者</param>
        /// <param name="from">消息来源</param>
        /// <param name="title">标题</param>
        /// <param name="description">描述信息</param>
        /// <param name="musicurl">音乐链接</param>
        /// <param name="hqmusicurl">高质量音乐链接,WIFI环境优先使用该链接播放音乐</param>
        /// <returns>生成的输出文本</returns>
        public  string  ResponseMusicMsg( string  title, string  description, string  musicurl, string  hqmusicurl)
        {
            StringBuilder sb = new  StringBuilder();
            sb.AppendFormat( "<xml>" );
            sb.AppendFormat( "<ToUserName><![CDATA[{0}]]></ToUserName>" , clientUser);
            sb.AppendFormat( "<FromUserName><![CDATA[{0}]]></FromUserName>" , serverUser);
            sb.AppendFormat( "<CreateTime>{0}</CreateTime>" , DateTime.Now.Ticks.ToString());
            sb.AppendFormat( "<MsgType><![CDATA[music]]></MsgType>" );
            sb.AppendFormat( "<Music>" );
            sb.AppendFormat( "   <Title><![CDATA[{0}]]></Title>" , title);
            sb.AppendFormat( "   <Description><![CDATA[{0}]]></Description>" , description);
            sb.AppendFormat( "   <MusicUrl><![CDATA[{0}]]></MusicUrl>" , musicurl);
            sb.AppendFormat( "   <HQMusicUrl><![CDATA[{0}]]></HQMusicUrl>" , hqmusicurl);
            sb.AppendFormat( "   <FuncFlag>0</FuncFlag>" );
            sb.AppendFormat( "</Music>" );
            sb.AppendFormat( "</xml>" );
            return  sb.ToString();
        }

  

二、效果展示

建议使用wifi时候听歌

转载于:https://www.cnblogs.com/imaker/p/6285501.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值