基于微信公众平台的Python开发——(网易云)音乐搜索

来源:互联网 发布:java 迷宫移动 编辑:程序博客网 时间:2024/06/13 23:59

引言

关于微信公众平台开发——音乐搜索的相关背景知识,大家可以参看博客(http://blog.csdn.net/zhaoyazhi2129/article/details/9194483),里面有详细介绍,本文不做赘述。网上基本是基于百度音乐,其返回的是xml格式数据。个人感觉相比json格式,xml太繁琐。另外自己一直比较偏爱网易云音乐,于是决定摸索下开发基于网易云音乐的音乐在线搜索。最后自我感觉简单多了,都不用申请神马APIkey啥的。读者可以关注zakic2015体验该功能。效果图如下:


(小技巧:搜索关键字时,可通过增加歌手名来提高搜索结果准确度,即准确度:“音乐+歌名+歌手名”>“音乐+歌名")

网易云音乐搜索API

URL:http://s.music.163.com/search/get/获取方式:GET参数:    src: lofter //可为空    type: 1    filterDj: true|false //可为空    s:  //关键词    limit: 10 //限制返回结果数    offset: 0 //偏移    callback:  //为空时返回json,反之返回jsonp callback
里,我在处理过程中做了简化,直接令limit=1,搜索返回的json结果如下:

Python调用网易云音乐搜索API

# -*- coding: utf-8 -*-import urllib2import jsonclass NetMusic:        def query_music_info(self,word):        baseurl = r'http://s.music.163.com/search/get/?type=1&s='        qword = urllib2.quote(word)        url = baseurl + qword + r'&limit=1&offset=0'         resp = urllib2.urlopen(url)        music = json.loads(resp.read())        return music

接下来就是解析返回的json数据了,首先看下微信公众平台回复音乐信息的reply_music.xml如下:
$def with (toUser,fromUser,createTime,musicTitle,musicDes,musicURL)<xml><ToUserName><![CDATA[$toUser]]></ToUserName><FromUserName><![CDATA[$fromUser]]></FromUserName><CreateTime>$createTime</CreateTime><MsgType><![CDATA[music]]></MsgType><Music><Title><![CDATA[$musicTitle]]></Title><Description><![CDATA[$musicDes]]></Description><MusicUrl><![CDATA[$musicURL]]></MusicUrl><HQMusicUrl><![CDATA[$musicURL]]></HQMusicUrl></Music></xml>

所以之后的工作就是从json数据中提取musicTitle,musicDes,musicURL三个参数。提取结果如下:
title = music['result']['songs'][0]['name']desc =  u'来自网易云音乐'  url = music['result']['songs'][0]['audio']return self.render.reply_music(fromUser,toUser,int(time.time()),title,desc,url)

参考

http://blog.csdn.net/zhaoyazhi2129/article/details/9194483

http://mrasong.com/a/163-music-api

http://www.52pojie.cn/thread-339852-1-1.html


体验(还有很多其他功能哦)


0 0
原创粉丝点击