Skip to content

网易云音乐云盘API

ZHANG RT edited this page Apr 1, 2015 · 2 revisions

网易云音乐客户端提供了一个叫做云盘的东西,可以手工上传曲子,并且播放。不过现在只支持客户端。不知道要不要添加到这个项目里。如图: 2015-03-31 22 20 47 图中的Mirai Miracle 就是手工上传的曲子。这个在网页版的api中得不到相关的信息。

用Anyproxy分析了一下PC端的api,大概有以下的结果:

原来api是 http://music.163.com/api/playlist/detail?id=30391223&offset=0&total=true&limit=1001&csrf_token=358c82d006c539e72c6f68583a95ceb9

测试发现新的api变成了 http://music.163.com/api/v2/playlist/detail?id=30391223&offset=0&total=true&limit=1001&csrf_token=358c82d006c539e72c6f68583a95ceb9

当携带Cookie

[
{
    "domain": ".music.163.com",
    "expirationDate": 1459434720,
    "hostOnly": false,
    "httpOnly": false,
    "name": "MUSIC_U",
    "path": "/",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "e2d3b03bfec5a6b3944edc75b89ce65a45c8d4980aa439590d31c0fe4f1b3684abdac0706d3b3a5e0e7d62790d97a47faf9e62a8590fd08a",
    "id": 1
},
{
    "domain": ".music.163.com",
    "expirationDate": 1459434600,
    "hostOnly": false,
    "httpOnly": false,
    "name": "os",
    "path": "/",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "pc",
    "id": 2
}
]

的时候即可得到结果。测试得到只有携带os=pc 的cookie就可以返回不含云网盘数据的playlist, 也就是等同于现在的api,不过具体的参数以及定义都有所改变。如果想要得到云网盘的数据,需要携带MUSIC_U参数。这个参数还不知道时怎么得到的。貌似正常网页版登陆后也会有这个参数。

然后返回的数据大概如下,做了json的解析:

{
    "playlist": {
        "subscribers": [],
        "subscribed": false,
        "creator": {
            "signature": "",
            "authority": 0,
            "description": "",
            "userId": 37734080,
            "nickname": "Catofes",
            "avatarUrl": "http://p4.music.126.net/L-1w-AuM_2TH-tW7Olsp3g==/3223768092658904.jpg",
            "backgroundImgId": 2002210674180202,
            "avatarImgId": 3223768092658904,
            "mutual": false,
            "gender": 0,
            "birthday": -2209017600000,
            "province": 110000,
            "city": 110101,
            "defaultAvatar": false,
            "userType": 0,
            "accountStatus": 0,
            "expertTags": null,
            "detailDescription": "",
            "djStatus": 0,
            "authStatus": 0,
            "followed": false,
            "backgroundUrl": "http://p1.music.126.net/pmHS4fcQtcNEGewNb5HRhg==/2002210674180202.jpg"
        },
        "tracks": [
            {
                "rtUrls": [],
                "name": "新鸳鸯蝴蝶梦",
                "id": 95410,
                "v": 3,
                "st": 1,
                "t": 0,
                "fee": 0,
                "ftype": 0,
                "rtype": 0,
                "rurl": null,
                "no": 1,
                "pst": 0,
                "alia": [],
                "pop": 90,
                "rt": "",
                "mst": 9,
                "cp": 5003,
                "crbt": "835fbd444d38c4f4e1efe33c11bf3954",
                "mv": 0,
                "cf": "",
                "ar": [
                    {
                        "id": 3082,
                        "name": "黄安"
                    }
                ],
                "al": {
                    "id": 9319,
                    "name": "新鸳鸯蝴蝶梦",
                    "picStr": "38482906984192",
                    "pic": 38482906984192
                },
                "dt": 261799,
                "h": {
                    "br": 320000,
                    "fid": 1031341906860656,
                    "size": 10485884,
                    "vd": -0.000265076
                },
                "m": {
                    "br": 160000,
                    "fid": 1020346790582851,
                    "size": 5254603,
                    "vd": 0
                },
                "l": {
                    "br": 96000,
                    "fid": 1212761325443605,
                    "size": 3161672,
                    "vd": -0.000265076
                },
                "a": {
                    "br": 64000,
                    "fid": 5830710162150141,
                    "size": 2119031,
                    "vd": 0
                },
                "cd": "",
                "rtUrl": null
            },
            {
                "rtUrls": [],
                "name": "人にやさしく",
                "id": 30245511,
                "v": 2,
                "st": 0,
                "t": 0,
                "fee": 0,
                "ftype": 0,
                "rtype": 0,
                "rurl": null,
                "no": 1,
                "pst": 0,
                "alia": [],
                "pop": 80,
                "rt": null,
                "mst": 9,
                "cp": 0,
                "crbt": null,
                "mv": 0,
                "cf": "",
                "ar": [
                    {
                        "id": 1047395,
                        "name": "THE ROLLING GIRLS"
                    }
                ],
                "al": {
                    "id": 3094448,
                    "name": "THE ROLLING GIRLS THEME SONGS COLLECTION",
                    "picStr": "7894493487528893",
                    "pic": 7894493487528893
                },
                "dt": 201480,
                "h": {
                    "br": 320000,
                    "fid": 7852712045676580,
                    "size": 8062179,
                    "vd": -2.36
                },
                "m": {
                    "br": 160000,
                    "fid": 7852712045676581,
                    "size": 4031619,
                    "vd": -1.96
                },
                "l": {
                    "br": 96000,
                    "fid": 7852712045676582,
                    "size": 2419395,
                    "vd": -2.1
                },
                "a": {
                    "br": 64000,
                    "fid": 7761452580569932,
                    "size": 1634106,
                    "vd": 0
                },
                "cd": "",
                "rtUrl": null
            },
            {
                "rtUrls": [],
                "name": null,
                "id": 29881275,
                "v": 3,
                "st": 0,
                "t": 1,
                "fee": 0,
                "ftype": 0,
                "rtype": 0,
                "rurl": null,
                "no": 0,
                "pst": 0,
                "alia": [],
                "pop": 0,
                "rt": null,
                "mst": 9,
                "cp": 0,
                "crbt": null,
                "mv": 0,
                "cf": null,
                "ar": [
                    {
                        "id": 0,
                        "name": null
                    }
                ],
                "al": {
                    "id": 0,
                    "name": null,
                    "picStr": "0",
                    "pic": 0
                },
                "dt": 219000,
                "h": {
                    "br": 320000,
                    "fid": 0,
                    "size": 8776247,
                    "vd": 0
                },
                "m": {
                    "br": 160000,
                    "fid": 0,
                    "size": 4388199,
                    "vd": 0
                },
                "l": {
                    "br": 96000,
                    "fid": 0,
                    "size": 2632979,
                    "vd": 0
                },
                "a": null,
                "cd": null,
                "rtUrl": null,
                "pc": {
                    "nickname": "Catofes",
                    "uid": 37734080,
                    "sn": "Mirai Miracle",
                    "ar": "Ghost",
                    "alb": "",
                    "br": 320,
                    "fn": "x13079310.mp3",
                    "cid": ""
                }
            }

做了一定的删减,所以数据不完全。可以看出新版本api(毕竟有v2的标识)对于普通曲子的返回结果也变了,直接返回了多个品质的曲子,对应的不同的mp3文件。然后也包涵了自己上传的曲子的相关信息。

重要的有两个信息,一个应该是曲子的id: "id": 29881275, 一个我猜是用户uid "uid": 37734080,

访问 http://music.163.com/api/cloud/media/url?id=29881275&uid=37734080&quality=h

既可以得到对应的曲子地址。这个Cookie 只需要 os=pc 这一个存在即可 {"url":"http://m3.music.126.net/20150331230203/a053fee8eb3543bc430d356caffbb1e7/NTMxMzgxODA=/d251a331521f3cfa7618c67ad1c5a54f.mp3","bitrate":320000,"size":8776247,"code":200}

得到的链接应该就是播放链接。

至于本身是网易云的音乐文件,重要的参数是: "h": { "br": 320000, "fid": 7852712045676580, "size": 8062179, "vd": -2.36 }, 里面的fid。

随后pc会请求

/2LrzOopZvDTHbpM-LJm86w==/7852712045676588.mp3?v=17509840 (这是另一个曲子的链接,和另外一个曲子的fid对应,原来曲子的连接地址被我刷掉了。)测试了一下前面的字符串和现行api.py里面的encrypted_id(id)函数返回的是一样的。

整个playlist json文件如下: https://gist.github.com/darknessomi/5eb366ac2cbf1dd49192

Clone this wiki locally