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

引言

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

基于微信公众平台的Python开发——(网易云)音乐搜索_第1张图片

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

网易云音乐搜索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)



$createTime


<![CDATA[$musicTitle]]>





所以之后的工作就是从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


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

基于微信公众平台的Python开发——(网易云)音乐搜索_第2张图片

你可能感兴趣的:(Python)