百度音乐api接口
技术
最近正在研究百度音乐的 API,上网搜了下,不外乎就是直接抓网页或者是已经用烂的的 widget 的 API:
http://box.zhangmen.baidu.com/x?op=12&count=1&title=大约在冬季$$齐秦$$$$
这东东输出的是一堆 xml,而且结果也就那么四五条,觉得不实用,所以我打算研究下别的
用 fiddler2 抓了下网页版的百度音乐盒。。尼玛一堆的 gif,css,js 什么的,找不到什么有价值的 url
后来我下了百度音乐电脑版的客户端,搜索一下音乐。。结果发现搜索界面也特么是 html。。。不爽 ing
想了许久,我看着桌上的手机,灵机一动~~诶,抓百度音乐的手机版会不会更方便些呢,手机为了省流量的话发出去的请求应该会少很多,也比较好找
说干就干,于是我下了百度音乐的安卓客户端,然后连接 WiFi,把电脑的 ip 设成代理服务器,于是 fiddler2 上便出现了手机发出的 http 请求
果然,收获还是大大滴~~~~~~~
其实就是一个网址:
http://tingapi.ting.baidu.com/v1/restserver/ting
它全部都是用 get 请求实现的,后面加不同参数可以实现不同的功能,下面把我抓到的一一介绍(仅供学习交流,请勿用于商业用途):
1.根据关键词返回接近的结果
http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=4.9.2.0&method=baidu.ting.search.catalogSug&format=json&query=小苹果
然后它会给你个 json 出来,query 参数的值不同他的结果不同,有这个 songid 你就可以在百度音乐找到地址啦
{
"song": [
{
"songid": "120125029",
"songname": "小苹果",
"artistname": "筷子兄弟"
},
{
"songid": "121098102",
"songname": "小苹果",
"artistname": "回音哥"
},
{
"songid": "85762160",
"songname": "小苹果 - 每当唱起这首歌",
"artistname": "王媛媛"
},
{
"songid": "67368864",
"songname": "小苹果",
"artistname": "铃声"
},
{
"songid": "85762158",
"songname": "小苹果 手风琴曲",
"artistname": "佚名"
},
{
"songid": "85713017",
"songname": "小苹果树请医生",
"artistname": "儿童故事"
},
{
"songid": "35408612",
"songname": "小苹果树请医生",
"artistname": "佚名"
}
],
"artist": [],
"album": [],
"order": "song",
"error_code": 22000
}
2.根据歌曲名和歌手名搜索歌曲
http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=4.9.2.0&method=baidu.ting.search.merge&format=json&query=小苹果-筷子兄弟
同样会有个 json,而且里面有歌词的链接哦:
{
"error_code": 22000,
"result": {
"query": "小苹果-筷子兄弟",
"syn_words": "",
"rqt_type": 1,
"song_info": {
"total": 1,
"song_list": [
{
"content": "",
"copy_type": "1",
"toneid": "0",
"info": "电影《老男孩之猛龙过江》2014插曲",
"all_rate": "64,128,192,256,320,flac",
"resource_type": 0,
"relate_status": 0,
"has_mv_mobile": 1,
"song_id": "120125029",
"title": "小苹果",
"ting_uid": "9295",
"author": "筷子兄弟",
"album_id": "121556956",
"album_title": "老男孩之猛龙过江 电影原声",
"is_first_publish": 0,
"havehigh": 2,
"charge": 0,
"has_mv": 1,
"learn": 1,
"song_source": "",
"piao_id": "0",
"korean_bb_song": "",
"resource_type_ext": "",
"artist_id": "57520",
"all_artist_id": "57520",
"lrclink": "http://musicdata.baidu.com/data2/lrc/121017633/%E5%B0%8F%E8%8B%B9%E6%9E%9C.lrc",
"data_source": 0,
"cluster_id": 0
}
]
}
}
}
3.通过 id 获取地址歌词和图片
这个不是客户端抓的。。似乎那个 API 关于歌词图片下载地址的接口得参数都有加密
http://ting.baidu.com/data/music/links?songIds=120125029
还是 json:
{
"errorCode": 22000,
"data": {
"xcode": "963cc26c0c0fdd6cb639b3d1b2fa946c",
"songList": [
{
"queryId": "120125029",
"songId": 120125029,
"songName": "小苹果",
"artistId": "9295",
"artistName": "筷子兄弟",
"albumId": 121556956,
"albumName": "老男孩之猛龙过江 电影原声",
"songPicSmall": "http://a.hiphotos.baidu.com/ting/pic/item/32fa828ba61ea8d3a59619cd950a304e241f5846.jpg",
"songPicBig": "http://b.hiphotos.baidu.com/ting/pic/item/dc54564e9258d109f857c47bd358ccbf6d814d46.jpg",
"songPicRadio": "http://c.hiphotos.baidu.com/ting/pic/item/e4dde71190ef76c6966696e29f16fdfaae516746.jpg",
"lrcLink": "/data2/lrc/121017633/121017633.lrc",
"version": "",
"copyType": 1,
"time": 211,
"linkCode": 22000,
"songLink": "http://zhangmenshiting.baidu.com/data2/music/121859589/1201250291407038461.mp3?xcode=963cc26c0c0fdd6cd95227c58110eada88aca43f4cfb1c02",
"showLink": "http://zhangmenshiting.baidu.com/data2/music/121859589/1201250291407038461.mp3?xcode=963cc26c0c0fdd6cd95227c58110eada88aca43f4cfb1c02",
"format": "mp3",
"rate": 128,
"size": 3394555,
"relateStatus": "0",
"resourceType": "0"
}
]
}
}
目前能用的就是这么多,应该可以弄一个微信点歌了^_^ ,等我把百度音乐的加密搞出来的话我会继续更新的~~~
希望这些东西对那些想做在线音乐的朋友们有帮助吧