python - 豆瓣FM如何生成请求音乐列表的表单
天蓬老师
天蓬老师 2017-04-17 11:27:41
0
3
347

打开豆瓣FM,就会有歌曲播放,如下:

看了下浏览器加载的内容,发现浏览器通过访问:http://douban.fm/j/mine/playlist?type=n&sid=&pt=0.0&channel=0&from=mainsite&r=c7bc353d05,然后获得一些音乐的数据,如下图:

为了获得歌曲信息发出的具体请求信息如下:

里面有type、sid、pt、channel、from、r字段,但是这些字段的值是怎么得到的啊,现在只知道channel是频道的代码,0是私人频道,-3是红心频道等。其他字段的值不知道是怎么得到的,如果是随机生成的,那么随机函数在哪里呢?

已经看了https://code.google.com/p/drhac/wiki/Protocol 关于这些字段的表述,但是还是没有解决上面的疑问。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua (3)
阿神

其实这个可以用对比方法来获取他的含义。 我看了一下。 r就是为了防止ajax缓存的一个类似时间戳的作用 channel就是频道,其实有实际意义就是这个参数 然后你给的文档也写的非常详细了啊。 你主要是想知道频道的id是如何获取。他是通过网页传参进去。

在douban.fm首页里面,源代码不是有写着他的频道和对应的id吗?因为他频道是可以个人创建,你只需要把官方的频道手动复制下来就行了,好像就几十个。 你也可以通过搜索获取。。

http://douban.fm/j/explore/search?query=关键字&start=0&limit=20

    迷茫

    参考 github 上命令行电台:

    Python版

    node.js 版

      巴扎黑

      http://douban.fm/j/mine/playlist?type=n&sid=966135&pt=206.8&channel=61&pb=64&from=mainsite&r=1d56c92354
      上面的链接是一个基本的豆瓣歌曲列表请求。每次对歌曲进行操作(加/取消红心,下一个,加入垃圾桶等)都会重新向豆瓣发送新的歌曲请求。


      type是对该歌曲的操作,取值有:n/r/u/b/e。
      n:一开始进入豆瓣type取值为n
      s:下一曲
      r:对该歌曲加红心
      u:取消该歌曲的红心
      b:将该歌曲放入垃圾桶
      e:对该歌曲没有任何操作
      (若对歌曲无操作,不会更新歌曲列表,但是还会发送一个请求给豆瓣,类似于这种:http://douban.fm/j/mine/playlist?type=e&sid=2063541&channel=61&pt=286.9&pb=64&from=mainsite&r=aa555bfa8e,不过不会更新歌曲列表,该请求返回{"r":0})


      sid是当前播放歌曲的id
      sid可以在链接返回的json数据里面得到


      channel是频道
      频道获取链接:http://douban.fm/j/app/radio/channels


      from字段的值固定为mainsite


      其他字段还不清楚具体含义,不知道对获取歌曲列表有什么具体的影响。

      随机
      http://douban.fm/j/mine/playlist?type=n&sid=966135&pt=206.8&channel=61&pb=64&from=mainsite&r=1d56c92354
      加红心
      http://douban.fm/j/mine/playlist?type=r&sid=2065721&pt=25.9&channel=61&pb=64&from=mainsite&r=fd0c942a01
      取消红心
      http://douban.fm/j/mine/playlist?type=u&sid=2065721&pt=36.3&channel=61&pb=64&from=mainsite&r=1b51b45b21
      加入垃圾桶
      http://douban.fm/j/mine/playlist?type=b&sid=2065721&pt=111.9&channel=61&pb=64&from=mainsite&r=4b4f7703f5
      下一曲
      http://douban.fm/j/mine/playlist?type=s&sid=2017382&pt=119.5&channel=61&pb=64&from=mainsite&r=38834642d5
      无操作顺序播放
      http://douban.fm/j/mine/playlist?type=e&sid=2005025&channel=61&pt=224.8&pb=64&from=mainsite&r=75ceee4fa9

        Muat turun terkini
        Lagi>
        kesan web
        Kod sumber laman web
        Bahan laman web
        Templat hujung hadapan
        Tentang kita Penafian Sitemap
        Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!