Python | XimalayaParseApi

视频网站的接口已经搞得差不多了,近来闲来无事,发现喜马拉雅上有不少相声和评书,都是我最喜欢的演员,郭德纲、于谦、郭鹤鸣等等,准备动手研究研究喜马拉雅的音频下载API

常规方法,F12打开开发者模式,随机播放一个音频,过滤media选项,很直观的得到音频文件的下载地址以及访问参数,https://audiopay.cos.xmcdn.com/download/1.0.0/group2/M03/44/FB/wKgLdFyIf4iiAq4_AEIEdMOeKMY136.m4a?sign=0d220d298c55cf658a42daec598ff565&buy_key=617574686f72697a6564&token=6932&timestamp=1595854896&duration=534

其中,很明显有五个参数,sign、buy_key、token、timestamp以及duration,其中时间戳可以简单的通过python中的time扩展包获得,但至于其他的,还是要再研究研究。

没办法,只能从所有的交互数据中翻找,发现了如下一条

很好,domain、duration以及buy_key都找到了,可问题是剩下的几个参数怎么办?还有那个ep和fileID这两个参数看起来怪怪的,会不会有用呢?

抱着求知的心态,在github上一番寻找,发现了如下文件

https://github.com/hkslover/ximalaya/blob/master/pay/get_player_url.s

是喜马拉雅获取文件路径、文件名、sign以及token的算法,我需要做的就是将其用python语言实现

将各参数组合,即可得到目标地址,实现音频下载的功能。

· 后记

美中不足的是,该方法只能下载帐号所能播放的音频,而付费音频或者非会员用户只能得到前几秒的内容。

而且我并没写相关的下载软件,仅仅是实现了接口而已,但是支持全集解析。

体验地址,api.sometools.online/release/ximalaya/,具体访问方法参见github

  • 相关资料

GitHub开源代码

接口示意