本文档是通过对网易云音乐Android客户端(1.5.2)的部分功能进行分析得出的
在所有的交互中,均需要在cookie中添加这对键值appver=1.5.2;
(Update 2014-07-13) cookie中添加
appver=2.0.2
referer设置为http://music.163.com
POST http://music.163.com/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;" http://music.163.com/api/search/get/
3. 获取歌手专辑列表
GET http://music.163.com/api/artist/albums/[artist_id]/
其中artist_id
用歌手id替换
offset: 偏移数量,用于分页
limit: 返回数量
curl -b "appver=1.5.2;" "http://music.163.com/api/artist/albums/10557?offset=0&limit=3"
4. 获取专辑音乐列表
GET http://music.163.com/api/album/[album_id]/
其中album_id
用专辑id替换
curl -b "appver=1.5.2;" "http://music.163.com/api/album/32311/"
5. 下载音乐文件
GET http://m1.music.126.net/[encrypted_song_id]/[song_dfsId].mp3
其中song_dfsId
为歌曲id,同一歌曲不同比特率有不同的id,见上结果。encrypted_song_id
为song_dfsId
加密后的字符串。
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