JS下载喜马拉雅非付费音频

目录

JS下载喜马拉雅非付费音频

1 Demo“成品”及GitHub地址

2 数据分析

3 JS下载文件流

4 搜索列表,下载音频

5 总结


昨天分析了喜马拉雅音频的接口方法,使用java实现了整个专辑的单线程下载,最后说好的可以用ajax的方法来试一下,所以今天一下班便花了点时间做了个简单的demo。

1 Demo“成品”及GitHub地址

首先先看demo”成品“:

GitHub源码

2 数据分析

数据分析请看这篇:Java爬取喜马拉雅非付费音频

从上面文章的数据分析可以看出来,一个音频专辑的主要信息在 https://www.ximalaya.com/revision/album?albumId=4756811这个get请求中

而音频列表、下载链接则在下面这个请求中:

https://www.ximalaya.com/revision/play/album?albumId=4756811&pageNum=1&sort=-1&pageSize=30

3 JS下载文件流

因此,我们可以来写代码啦~

因为音频下载链接中音频的名称是这样子的~

http://audio.xmcdn.com/group17/M04/31/68/wKgJKVeLoPTADT0IAFbubI--Ykg766.m4a

所以需要知道如何使用js来处理文件流:

  function download(){//文件下载var obj = "http://audio.xmcdn.com/group22/M05/16/B6/wKgJM1gYvDKgP4bBAFO7CGP_MIk161.m4a";var blob = new Blob([obj], { type: 'application/octet-stream' }),fileName = "《摸金天师》第416章 六地火.m4a";downFile(blob, fileName);}//js下载文件流function downFile(blob, fileName) {if (window.navigator.msSaveOrOpenBlob) {navigator.msSaveBlob(blob, fileName);} else {var link = document.createElement('a');link.href = window.URL.createObjectURL(blob);link.download = fileName;link.click();window.URL.revokeObjectURL(link.href);}}

4 搜索列表,下载音频

页面布局:

<html><head><title>喜马拉雅音频JS版</title><script type="text/javascript" src="js/jquery.min.js"></script>
</head><body><input id="albumId" /><button onclick="search()">搜索</button><button onclick="download()">下载</button><div id="fileList">
</body></html>

JS:

<script type="text/javascript">function search() {var albumId = $("#albumId").val();$.ajax({type: "GET",url: "https://www.ximalaya.com/revision/album",data: { "albumId": albumId },//4756811dataType: "json",success: function (data) {if (data && data.data && data.ret == 200) {var pageNum = data.data.tracksInfo.pageNum;var pageSize = data.data.tracksInfo.pageSize;var total = data.data.tracksInfo.trackTotalCount;//总页数var totalPage = total / pageSize + 1;for(var i = 1 ; i <= totalPage ; i++){$.ajax({type: "GET",url: "https://www.ximalaya.com/revision/play/album",data: { "albumId": albumId,"pageNum": i,"sort":-1,"pageSize":pageSize},dataType: "json",success: function (data) {if (data && data.data && data.ret == 200) {var result = data.data.tracksAudioPlay;var listHtml = "";for(var j=0; j <result.length; j++){listHtml+="<a href="+result[j].src+">"+result[j].trackName+"</a></br>"}$("#fileList").append(listHtml);}}});}}console.log(data);}});}function download(){//文件下载var obj = "http://audio.xmcdn.com/group22/M05/16/B6/wKgJM1gYvDKgP4bBAFO7CGP_MIk161.m4a";var blob = new Blob([obj], { type: 'application/octet-stream' }),fileName = "《摸金天师》第416章 六地火.m4a";downFile(blob, fileName);}//js下载文件流function downFile(blob, fileName) {if (window.navigator.msSaveOrOpenBlob) {navigator.msSaveBlob(blob, fileName);} else {var link = document.createElement('a');link.href = window.URL.createObjectURL(blob);link.download = fileName;link.click();window.URL.revokeObjectURL(link.href);}}</script>

5 总结

这是个很简单的项目,还有很多的细节可以优化,如专辑ID的自动获取、批量下载等,原理无非就是调喜马拉雅后台的接口,拿到数据在自己的网页上显示出来。以后有时间可能会去优化一下吧。

我觉得身为程序员最大的享受就是能用技术去实现大量相同数据的统一存储,如某些网站的种子链接的统一存储,咳咳咳,我是个正经的程序员~

JS下载喜马拉雅非付费音频相关推荐

  1. Java爬取喜马拉雅非付费音频

    Java爬取喜马拉雅非付费音频 目录 Java爬取喜马拉雅非付费音频 前言 1 打开喜马拉雅网站并搜索一个节目 2 研究其数据来源,获取分页数据 3 获取列表信息 4 获取音频下载地址 5 核心代码 ...

  2. JS + shell 批量下载 喜马拉雅FM 的音频

    一直在线收听喜马拉雅的音频节目, 收听广播节目节约了大量时间,不管是地铁上还是走路都可以收听,不用低头看书,也脱离了颈椎病的苦恼. 过年回家我想在车上收听,发现只能通过手机播放,效果不好,我就在网上找 ...

  3. 测试18款听书APP,免费听喜马拉雅上付费音频的办法其实很多

    这两年听书好像是慢慢火了起来,在公众号后台也经常有人来问听书APP推荐 倒不是空穴来风,阿虚随便查了一下发现2020年「第十八次全国国民阅读调查报告」显示我国现在有 31.6% 的成年国民有听书习惯 ...

  4. 下载喜马拉雅FM的音频

    PS:因为经济情况,目前在喜马拉雅FM听的都是不需要付费的音频,在此感谢这些作者们,所以下列方法也是针对不需要付费的音频操作的. 方法很简单,打开相应的播放页面,鼠标在页面上右键检查,打开Networ ...

  5. (python)下载喜马拉雅电台的音频

    上一篇文章讲了如何分析,寻找视频的下载链接.其实获取喜马拉雅电台音频的链接方式也是如此,通过chrome的Network调试工具去寻找页面链接与下载链接之间的关系. 第一步:分析页面源码 直接pass ...

  6. 如何下载喜马拉雅里面的音频文件

    http://jingyan.baidu.com/article/1876c8529ebee0890b13769c.html 下载360 , 扩展工具 -> fvd download 然后打开相 ...

  7. 新一配:perl循环调用python爬虫批量下载喜马拉雅音频

    新一配:perl循环调用python爬虫批量下载喜马拉雅音频 手机下载喜马拉雅音频后,获得的音频文件虽然可以转成mp3格式,但其文件名却是一长串字符串,无法辨别是哪一集,网上找了各种工具,都有局限性, ...

  8. 如何将喜马拉雅FM的音频下载下来保存

    喜马拉雅FM是一款老少皆宜的手机影音视听应用,在我们收听到好听的音频时,希望将它保存下载,以便在没有网络连接的时候也能够回味.那么下面就来说说喜马拉雅FM怎么保存音频. 首先,大家打开喜马拉雅FM,然 ...

  9. 电脑上怎样下载喜马拉雅里的 Mp3

    电脑上怎样下载喜马拉雅里的 Mp3 工具: Chrome 浏览器 过程: 1.打开Chrome 按F12.会弹出 Developer Tools 窗口.点击 NetWork ,观察访问的网页情况. 2 ...

最新文章

  1. 分享自己的C#开发类库
  2. python中str用法_python数据类型之str用法
  3. LeetCode 1325. 删除给定值的叶子节点(递归)
  4. 机器学习从理论到工程的第二步-开发环境与工具篇(下)
  5. Linux java 生效不了,linux jdk 不生效怎么办
  6. 34. Element textContent 属性
  7. 【原创】使用blockUI制作自定义的漂亮的网页提示框(代替confirm和alert)
  8. cmd bat 相对命令
  9. 1137. 第 N 个泰波那契数 动态规划
  10. 简述多媒体计算机的特点,多媒体技术的主要特点
  11. java实现康威生命游戏
  12. cd linux制作u盘启动盘,【cdlinux u盘启动】cdlinux制作U盘启动盘详细教程
  13. ps -ef 命令解析
  14. linux开启IP转发
  15. 学习大数据,大数据专家写给大数据分析学习者的10个理由
  16. linux kernel X-tranx-Y : Ethernet-to-Gadget
  17. SWIFT单一平台解决方案助力国家电投集团财务有限公司实现本外币一体、全球账户可视
  18. Ubuntu中安装edb1.3.0
  19. 企业付款到零钱操作步骤
  20. [转]王帅:深入PHP内核

热门文章

  1. 微信群总有人发广告?用Python写一个自动化机器人消灭他
  2. Excel中的$是什么意思
  3. 软件工程-第二章 软件过程
  4. 什么软件可以拍证件照电子版?分享两种拍证件照小妙招
  5. b2b2c电商平台系统
  6. Apache httpd 几个报错的解决记录
  7. guid linux 识别的分区表_GUID分区表(GPT)修复实战
  8. 拼多多店铺数据分析有什么作用?哪些数据是有用的?
  9. LaTex引用中文论文
  10. 38掌握分布式存储系统 GlusterFS 的基本用法,包括卷管理、数据复制