本文档是通过对网易云音乐Android客户端(1.5.2)的部分功能进行分析得出的
在所有的交互中,均需要在cookie中添加这对键值appver=1.5.2;
(Update 2014-07-13) cookie中添加
appver=2.0.2referer设置为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