Listen1 下载音乐方案

Listen1让你用一个网页就能听到多个网站的在线音乐(现已包括网易云音乐,QQ音乐,虾米音乐,豆瓣音乐)。你可以非常的简单的访问和收听在线音乐,而不用受到单个音乐网站资源不全的限制了。
它不仅能搜索多家在线音乐提供商的资源,还能方便的整理你喜欢的音乐,制作自己的歌单。尽兴的享受音乐吧!

可能出于版权考虑,listen1 不提供下载功能,但互联网中所见即所得,本文提供一种将音乐缓存下载为mp3的解决方案,结合listen1 Chrome Extension可以批量下载音乐。

说明

  • 打开listen1 Chrome Extension,添加需要下载的歌曲到当前播放列表
  • F12打开控制台,复制黏贴以下JS代码后回车开始;
  • 批量下载可以在Chrome下载设置里关闭下载前询问每个文件的保存位置,并设置好保存位置,避免每次选择位置;

JS代码

// 下载函数
function download(url, title){
    axios.get(url, {responseType: "blob"})
        .then(resp => {
            if(resp.status !== 200) console.log('get file failed.');
            else return resp.data;
        })
// 用blob方式来设置下载文件名为歌曲名
        .then(blob => {
            let link = document.createElement("a");
            link.href = window.URL.createObjectURL(blob);
            link.download = title;
            link.click();
            window.URL.revokeObjectURL(link.href);
        })
}
//  设置文件名:歌曲名_歌手.mp3
function get_name(idx){
    let obj = threadPlayer.playlist.filter(obj=>obj.id==idx)[0]
    return obj.title+'_'+obj.artist+'.mp3';
}

// 修改原播放器获取歌曲链接函数,增加获取链接时下载歌曲
threadPlayer.setMediaURI = function setMediaURI(uri, url) { 
      if (url) {
        this._media_uri_list[url] = uri;
//  插入下载函数
        download(uri, get_name(url));
      }
}
// 循环播放列表所有歌,获得每首歌的地址同时触发下载
for(let i=0; i

你可能感兴趣的:(Listen1 下载音乐方案)