前言
因为很喜欢喜马拉雅FM上的音频节目,之前也找过一些喜马拉雅音频下载器。可能是因为网站调整,有些下载器慢慢出现了问题,估计是有些地址解析不了了,于是就想着研究一下喜马拉雅FM的请求方法,利用java去模拟请求,做一个自己的小工具玩玩~
下面就开始研究喜马拉雅FM的请求方式吧!
1 打开喜马拉雅网站并搜索一个节目
这里的节目例子以我很喜欢的《首席医官》为例
喜马拉雅首页 首席医官 首席医官首页2 研究其数据来源,获取分页数据
打开浏览器控制台,清空Network下的日志
谷歌浏览器控制台点击任何一页,查看Network下的日志
分页列表 请求链接 分页数据信息从上面两幅图可以看出,分页的数据来自于请求:
https://www.ximalaya.com/revision/album?albumId=3071659
解析其返回的json数据便可以拿到分页信息
3 获取列表信息
在上面那个控制台中,还有一个请求可以看到列表信息
列表信息请求列表信息请求数据
从上面的请求中可以拿到每一则音频的基本信息
4 获取音频下载地址
清空浏览器控制台,点击任何一个音频,查看Network的地址
播放其中任意一个音频 音频下载地址请求 音频下载地址请求数据从这个请求中,我们也可以拿到列表信息,并且可以拿到音频的下载地址
5 核心代码
代码都是最基本的,之后有时间会对其进行优化,比如加入多线程下载、图形化界面、断点续传等,欢迎感兴趣的童鞋来博客或GitHub提意见_
有时间大家可以尝试做个前端版本,利用ajax请求,自己设计页面,这样相当于做了一个喜马拉雅FM免费音频的搜索引擎,从浏览器上直接搜索并下载_,到时候一起分享嘛~
6 基本使用
主函数如下
public static void main(String[] args){
//初始化音频列表,修改专辑ID便可下载该专辑的音频内容(非付费)
AudioBean audioBean = AudioDealUtil.initBean(
"https://www.ximalaya.com/revision/album",
"albumId=3071659");
//修改下载路径
AudioDealUtil.initDownloadAudio("https://www.ximalaya.com/revision/play/album",
audioBean,
"D://download//");
}
只要改变专辑ID和本地路径便可以下载音频啦~
Eclipse运行情况简书的小伙伴们,一起加油啦~
网友评论