1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > [转]网易云音乐API分析

[转]网易云音乐API分析

时间:2022-09-13 11:55:23

相关推荐

[转]网易云音乐API分析

源地址:

/yanunon/NeteaseCloudMusic/wiki/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90API%E5%88%86%E6%9E%90

1. 总览

本文档是通过对网易云音乐Android客户端(1.5.2)的部分功能进行分析得出的

在所有的交互中,均需要在cookie中设置这对键值appver=1.5.2;

2. 搜索

POST /api/search/get/

参数

s: 搜索词

limit: 返回数量

sub: 意义不明(非必须参数);取值:false

type: 搜索类型;取值意义

1单曲10专辑100歌手1000歌单1002用户

offset: 偏移数量,用于分页

MUSIC_U: 意义不明(非必须参数)

示例

curl -d "s=玫瑰色的你&limit=20&type=1&offset=0" -b "appver=1.5.2;" /api/search/get/

结果:

{"code": 200, "result": {"songCount": 1, "songs": [{"album": {"status": 1, "copyrightId": 0, "name": "\u795e\u7684\u6e38\u620f", "artist": {"alias": [], "picUrl": null, "id": 0, "name": ""}, "publishTime": 1344528000000, "id": 32311, "size": 10}, "status": 1, "copyrightId": 0, "name": "\u73ab\u7470\u8272\u7684\u4f60", "mvid": 5102, "alias": [], "artists": [{"alias": [], "picUrl": null, "id": 10557, "name": "\u5f20\u60ac"}], "duration": 297927, "id": 326695}]}}

3. 获取歌手专辑列表

GET /api/artist/albums/[artist_id]/

其中artist_id用歌手id替换

参数

offset: 偏移数量,用于分页

limit: 返回数量

示例

curl -b "appver=1.5.2;" "/api/artist/albums/10557?offset=0&limit=3"

结果:

{"hotAlbums": [{"status": 1, "blurPicUrl": "http://p2./mic-HzsY8tNY6DD1eHzdlg==/612427976714915.jpg", "commentThreadId": "R_AL_3_2263047", "description": "", "tags": "", "briefDesc": "", "artist": {"img1v1Url": "http://p1./6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg", "name": "\u5f20\u60ac", "briefDesc": "", "albumSize": 8, "img1v1Id": 0, "alias": ["\u7126\u5b89\u6ea5"], "picId": 168225279065170, "picUrl": "http://p1./F7i_-eBbuhpBXodY5U2oTw==/168225279065170.jpg", "id": 10557}, "companyId": 0, "publishTime": 1349366400007, "name": "\u795e\u7684\u6e38\u620f \u5de1\u6f14\u7cbe\u534e\u5b9e\u5f55", "alias": [], "picId": 612427976714915, "copyrightId": 0, "picUrl": "http://p1./mic-HzsY8tNY6DD1eHzdlg==/612427976714915.jpg", "company": "\u7d22\u5c3c\u97f3\u4e50", "songs": null, "type": null, "id": 2263047, "size": 7}, ...], "more": true, "code": 200, "artist": {"img1v1Url": "http://p1./6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg", "name": "\u5f20\u60ac", "briefDesc": "", "albumSize": 8, "img1v1Id": 0, "alias": ["\u7126\u5b89\u6ea5"], "picId": 168225279065170, "picUrl": "http://p1./F7i_-eBbuhpBXodY5U2oTw==/168225279065170.jpg", "id": 10557}}

4. 获取专辑音乐列表

GET /api/album/[album_id]/

其中album_id用专辑id替换

示例

curl -b "appver=1.5.2;" "/api/album/32311/"

结果:

{"album": {"alias": ["Games We Play"],"artist": {"albumSize": 8,"alias": ["\u7126\u5b89\u6ea5"],"briefDesc": "","id": 10557,"img1v1Id": 0,"img1v1Url": "http://p1./6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","name": "\u5f20\u60ac","picId": 168225279065170,"picUrl": "http://p1./F7i_-eBbuhpBXodY5U2oTw==/168225279065170.jpg"},"blurPicUrl": "http://p1./cdoUJ2yO5LRuJhGeIsRdjQ==/46179488380332.jpg","briefDesc": "","commentThreadId": "R_AL_3_32311","company": "\u7d22\u5c3c\u97f3\u4e50\u5a31\u4e50","companyId": 0,"copyrightId": 0,"description": "...\n\n","id": 32311,"info": {"commentCount": 1,"comments": null,"latestLikedUsers": null,"liked": false,"likedCount": 0,"shareCount": 2,"threadId": "R_AL_3_32311"},"name": "\u795e\u7684\u6e38\u620f","picId": 46179488380332,"picUrl": "http://p1./cdoUJ2yO5LRuJhGeIsRdjQ==/46179488380332.jpg","publishTime": 1344528000000,"size": 10,"songs": [{"album": {"alias": ["Games We Play"],"artist": {"albumSize": 0,"alias": [],"briefDesc": "","id": 0,"img1v1Id": 0,"img1v1Url": "http://p1./6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","name": "","picId": 0,"picUrl": ""},"blurPicUrl": "http://p1./cdoUJ2yO5LRuJhGeIsRdjQ==/46179488380332.jpg","briefDesc": "","commentThreadId": "R_AL_3_32311","company": "\u7d22\u5c3c\u97f3\u4e50\u5a31\u4e50","companyId": 0,"copyrightId": 0,"description": "","id": 32311,"name": "\u795e\u7684\u6e38\u620f","picId": 46179488380332,"picUrl": "http://p1./cdoUJ2yO5LRuJhGeIsRdjQ==/46179488380332.jpg","publishTime": 1344528000000,"size": 10,"songs": null,"status": 1,"tags": "","type": ""},"alias": [],"artists": [{"albumSize": 0,"alias": [],"briefDesc": "","id": 10557,"img1v1Id": 0,"img1v1Url": "http://p1./6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","name": "\u5f20\u60ac","picId": 0,"picUrl": ""}],"bMusic": {"bitrate": 320000,"dfsId": 1012650209189891,"id": 10334056,"name": "\u73ab\u7470\u8272\u7684\u4f60","playTime": 297927,"size": 11930240},"commentThreadId": "R_SO_4_326695","copyrightId": 0,"dayPlays": 0,"duration": 297927,"hMusic": {"bitrate": 320000,"dfsId": 1012650209189888,"id": 10334053,"name": "\u73ab\u7470\u8272\u7684\u4f60","playTime": 297927,"size": 11930240},"hearTime": 0,"id": 326695,"lMusic": {"bitrate": 96000,"dfsId": 1012650209189890,"id": 10334055,"name": "\u73ab\u7470\u8272\u7684\u4f60","playTime": 297927,"size": 3595194},"mMusic": {"bitrate": 160000,"dfsId": 1012650209189889,"id": 10334054,"name": "\u73ab\u7470\u8272\u7684\u4f60","playTime": 297927,"size": 5976935},"mp3Url": "http://m1./uCNvR9xHLoQIj1kIRyzadQ==/1012650209189889.mp3","mvid": 5102,"name": "\u73ab\u7470\u8272\u7684\u4f60","playedNum": 0,"popularity": 95.0,"position": 1,"score": 95,"starred": false,"starredNum": 0,"status": 1},...],"status": 1,"tags": "","type": ""},"code": 200}

5. 下载音乐文件

GET http://m1./[encrypted_song_id]/[song_dfsId].mp3

其中song_dfsId为歌曲id,同一歌曲不同比特率有不同的id,见上结果。encrypted_song_idsong_dfsId加密后的字符串。

歌曲id加密代码

import md5def encrypted_id(id):byte1 = bytearray('3go8&$8*3*3h0k(2)2')byte2 = bytearray(id)byte1_len = len(byte1)for i in xrange(len(byte2)):byte2[i] = byte2[i]^byte1[i%byte1_len]m = md5.new()m.update(byte2)result = m.digest().encode('base64')[:-1]result = result.replace('/', '_')result = result.replace('+', '-')return result

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。