豆瓣音乐API分析

http://douban.fm/j/mine/playlist 是用cookie来识别登录用户的,而http://www.douban.com/j/app/radio 则是在一次登录之后用token来识别,属于OAuth。建议使用这个接口,会好用一些。

 {"channels":[{"name_en":"Personal Radio","seq_id":0,"abbr_en":"My","name":"私人兆赫","channel_id":0},...}

频道(Channels) 

使用  GET方法对http://www.douban.com/j/app/radio/channels发起请求,将返回一个JSON,结构如下

{
    "channels": [
        {
            "name": "私人兆赫",
            "seq_id": 0,
            "abbr_en": "My",
            "channel_id": 0,
            "name_en": "Personal Radio"
        },
        ...
    ]
}

歌曲列表及其它功能 

使用  GET方法对http://www.douban.com/j/app/radio/people发起请求,其中可包含以下参数,采用URL Encode方法发送。   

  • 参数名    是否必选    参数类型    值

  • app_name    必选    string    radio_desktop_win

  • version    必选    int    100

  • user_id    非必选    string    user_id

  • expire    非必选    int    expire

  • token    非必选    string    token

  • sid    非必选    int    song id

  • h    非必选    string    最近播放列表

  • channel    非必选    int    频道id

  • type    必选    string    报告类型

  • app_name 是固定值radio_desktop_win

  • version 是固定值100

  • user_id 非必选,若有则必须与expire和token搭配使用

  • expire token过期时间msec

  • token 登录令牌

  • sid 歌曲的id

  • h 最近播放的音乐,格式为|song.sid:报告类型,如|1386894:s|444482:p|460268:s|48180:s|1027376:s|188257:s

  • channel 频道id

其中type 报告类型是一个字符,包括以下类型

  • 类型    需要参数    含义    报告长度

  • b    sid    bye,不再播放    短报告

  • e    sid    end,当前歌曲播放完毕,但是歌曲队列中还有歌曲    短报告

  • n        new,没有歌曲播放,歌曲队列也没有任何歌曲,需要返回新播放列表    长报告

  • p        playing,歌曲正在播放,队列中还有歌曲,需要返回新的播放列表

  • s    sid    skip,歌曲正在播放,队列中还有歌曲,适用于用户点击下一首    短报告

  • r    sid    rate,歌曲正在播放,标记喜欢当前歌曲    短报告

  • s    sid    skip,歌曲正在播放,队列中还有歌曲,适用于用户点击下一首    短报告

  • u    sid    unrate,歌曲正在播放,标记取消喜欢当前歌曲    短报告

其中,p报告可以附上h参数,表示最近播完的歌的信息。


获取新播放列表的返回信息:

{
    "r": 0,
    "version_max": 100,
    "song": [
        {
            "album": "/subject/2266925/",
            "picture": "http://img3.douban.com/mpic/s2891182.jpg",
            "ssid": "3853",
            "artist": "李宗盛 / 梁静茹",
            "url": "http://mr3.douban.com/201301221627/ca5607811b5ad84a5b66990f19135dbd/view/song/small/p425687.mp3",
            "company": "滚石",
            "title": "问",
            "rating_avg": 4.76596,
            "length": 207,
            "subtype": "",
            "public_time": "2007",
            "sid": "425687",
            "aid": "2266925",
            "kbps": "64",
            "albumtitle": "理性与感性作品音乐会",
            "like": 0
        },
        ...
    ]
}

解释:

  • r 错误判断,若为0则表示请求正确,若为1则表示出错,JSON中的err字段表示错误信息

  • version_max 固定值100

  • song 歌曲列表

  • album 专辑跳转地址

  • picture 专辑图片地址

  • ssid 未知

  • artist 艺术家

  • url 歌曲的URL

  • company 唱片公司

  • title 歌曲名

  • rating_avg 平均分数

  • length 长度

  • subtype 子类型(有些广告的字类型会是T)

  • public_time 出版年份

  • sid 歌曲id

  • aid 专辑id

  • kbps 码率

  • albumtitle 专辑名

  • like 是否已喜欢,0为false,1为true

用户登录 

使用 POST方法向http://www.douban.com/j/app/login发送数据,参数为

  •  参数名    是否必选    参数类型    值

  • app_name    必选    string    radio_dsktop_win

  • version    必选    int    100

  • email    必选    string    用户登录的邮箱名

  • password    必选    string    用户密码

返回的数据是JSON格式

{
    "user_id": "48071607",
    "err": "ok",
    "token": "50b196a088",
    "expire": "1374395894",
    "r": 0,
    "user_name": "钟小腾",
    "email": "[隐藏隐藏]"
}

 

若登录出错,r会为1,err会包含错误信息。

若模仿浏览器登录,还需要验证码。请求http://douban.fm/j/new_captcha,返回id然后将此id添加到http://douban.fm/misc/captcha?size=m&id=后面,再次请求。接下来登录,登录表单的目标地址为http://douban.fm/j/login,参数有:

  • source: radio

  • alias: 用户名

  • form_password: 密码

  • captcha_solution: 验证码

  • captcha_id: 验证码ID

  • task: sync_channel_list

参考:

  • [1]:http://zonyitoo.github.io/blog/2013/01/22/doubanfmbo-fang-qi-kai-fa-shou-ji/

  • [2]:https://github.com/turingou/douban.fm

  • [3]:http://www.cnblogs.com/7c00/archive/2013/01/15/2860505.html

你可能感兴趣的:(api,音乐,豆瓣,douban,FM)