最近一直苦恼与如何下载豆瓣FM上的音乐,想装入SD卡放车上听。因为数量巨大实在不想一个个去搜索选择。研究了下具体操作办法。
如果仅仅是需要下载加心歌曲话请直接移步百度搜索豆瓣匠1.3.6,直接可以帮助你下载到红心歌曲,监听http包发现他是用了安卓版的豆瓣FM的接口,这个JSON文件内直接暴露了音乐的连接地址。我特地下载了安卓版豆瓣FM发现他并没有累计收听这个记录,所以我们也无法批量获取这些MP3的原始地址。这篇文章主要讲如何帮助大家下载豆瓣FM累计收听的成千上万首歌曲。
必备工具:Firefox(火狐浏览器),FireBug(火狐的调试软件,如直接附加不成功可以手动下载后手动附加插件),E音乐盒(用来下载歌曲的软件,它有个特殊的功能,能直接批量导入歌名就帮你下载歌曲)。
1.使用火狐,打开FireBug,登录豆瓣FM,点击累计收听,查看FireBug,可以发现,当每次访问累计收听或是在累计收听内翻页会发起一个AJAX的GET去获取列表,注意看参数ck、spbid需要记录下来这个是用户相关参数,type是类型played代表的是累计收听(其他类别可以成其他的参数),start是分页参数。
2.使用jq代码批量获取歌曲名称和歌手。注意看第1行,这个是具体操作的页码我这个例子上的只获取2页。第3行则是从第几页开始获取。请将之前用FireBug获取到的用户相关参数替换成你自己的。然后复制到记事本,在重新粘帖到刚才的浏览器窗口的地址栏,回车访问,如果跳转到搜索了请检查头部的javascript:是否被浏览器删除了,如删除请手动补回再访问。
javascript: var tpage = 2; javascript: var tpage = 2; var a = []; var page = 1; var n = 0; for (page = 1; page <= tpage; page++) { n = (page - 1) * 15; var url = "http://douban.fm/j/play_record?ck=MFdp&spbid;=::wck3hMoPfgE&start;=" + n + "&type;=played"; $.ajax({ type: "GET", url: url, async: false, dataType: "json", success: function(json) { if(!json.songs){ a.push("----第"+page+"页出错!"); }else{ for (var i = 0; i < json.songs.length; i++) { a.push(json.songs[i].artist + " - " + json.songs[i].title); } } } }); } document.write(a.join(""));
3.将浏览器获得的内容复制到E音乐盒,并使用“批量音乐名称添加歌曲”。
5.最后说明下。E音乐盒已经停止更新了,数据源只能采用谷歌的,但是部分朋友网络翻墙问题请自行解决,或可以采用本方法的逻辑去把所有累计收听加心。