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

引言

关于微信公众平台开发——音乐搜索的相关背景知识,大家可以参看博客(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 urllib2
import json

class 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


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值