开源音乐下载神器XMusicDownloader更新啦,新增网易、腾讯音乐歌单歌曲、歌手歌曲、专辑歌曲一键下载,同时支持下载flac无损音乐。

功能

V1.0 功能开源工具软件XMusicDownloader——音乐下载神器

  • 聚合搜索多家音乐网站
  • 支持音乐批量下载
  • 搜索结果综合排序
  • 可以编写Provider程序,支持其他音乐网站

V1.1 新增功能支持歌单、专辑、歌手歌曲下载,支持无损下载

  • 支持歌单、专辑、歌手歌曲下载(腾讯、网易)
  • 支持flac无损、320,128 码率下载

扩展功能说明

主要是调用了一个[第三方接口 实现歌单、歌手和专辑歌曲读取,以及获取真实下载地址。

扩展provider接口,增加获取歌曲列表接口

增加Support接口判断url地址是否是歌单地址,增加GetSongList用于获取歌单的歌曲列表,增加getDownloadUrl(string id, string rate)获取歌曲下载地址。

public interface IMusicProvider{string Name { get; }string getDownloadUrl(Song song);List<Song> SearchSongs(string keyword, int page, int pageSize);// 歌单bool Support(string url);List<Song> GetSongList(string url);/// <summary>/// 获取下载地址/// </summary>/// <param name="id">歌曲id</param>/// <param name="rate">码率,音质 如果最大音质获取出错则自动转其他音质 </param>/// <returns>歌曲下载地址</returns>string getDownloadUrl(string id, string rate);}

实现provider

以QQ为例:

先判断是否是支持的url,主要是判断是否符合歌单、专辑、歌手的url格式。

        // 歌单: https://y.qq.com/n/yqq/playsquare/6924336223.html#stat=y_new.playlist.dissname// 专辑 https://y.qq.com/n/yqq/album/00153q8l2vldMz.html// 歌手 https://y.qq.com/n/yqq/singer/000CK5xN3yZDJt.htmlRegex regex = new Regex("\\/(\\w+).html");public bool Support(string url){if (url == null){return false;}if (!regex.IsMatch(url)){return false;}return url.StartsWith("https://y.qq.com/n/yqq/playsquare") || url.StartsWith("https://y.qq.com/n/yqq/album") || url.StartsWith("https://y.qq.com/n/yqq/singer");}

然后调用itooi.cn的api获取歌曲

  • 歌单接口 https://v1.itooi.cn/tencent/songList?id=
  • 歌手歌曲接口 https://v1.itooi.cn/tencent/song/artist?id=
  • 专辑歌曲接口 https://v1.itooi.cn/tencent/album?id=
 public List<Song> GetSongList(string url){var isSongList = url.StartsWith("https://y.qq.com/n/yqq/playsquare");var id = regex.Match(url).Groups[1].Value;var result = new List<Song>();if (isSongList){GetSongListDetail(id, result);}else if (url.StartsWith("https://y.qq.com/n/yqq/albu")){GetAlbum(id, result);}else{GetSingerSong(id, result);}return result;}private void GetSongListDetail(string id, List<Song> result){var requestUrl = "https://v1.itooi.cn/tencent/songList?id=" + id;var searchResult = HttpHelper.GET(requestUrl, DEFAULT_CONFIG);var songList = JObject.Parse(searchResult)["data"][0]["songlist"];var index = 1;foreach (var songItem in songList){var song = new Song{id = (string)songItem["songmid"],name = (string)songItem["title"],album = (string)songItem["album"]["name"],rate = 320,index = index++,size = (double)songItem["file"]["size_320mp3"],source = Name,//singer = (string)songItem["author"],duration = (double)songItem["interval"]};if (song.size == 0d){song.size = (double)songItem["file"]["size_128mp3"];song.rate = 128;}song.singer = "";foreach (var ar in songItem["singer"]){song.singer += ar["name"] + " ";}result.Add(song);}}

最后获取下载地址,接口地址是https://v1.itooi.cn/tencent/url?id=${id}&quality=[128,320,flac]

 public string getDownloadUrl(string id, string rate){return HttpHelper.DetectLocationUrl("https://v1.itooi.cn/tencent/url?id=" + id + "&quality=" + rate, DEFAULT_CONFIG);}

这里要检测下真实url,递归检测302跳转:

 public static string DetectLocationUrl(string url, HttpConfig config){if (config == null) config = new HttpConfig();using (HttpWebResponse response = GetResponse(url, "GET", null, config)){string detectUrl =  response.GetResponseHeader("Location");if(detectUrl.Length == 0){return url;}// 递归获取return DetectLocationUrl(detectUrl, config);}}

说明

目前仅QQ、网易实现了全部接口,其余的由于时间和使用频率关系,未实现,欢迎感兴趣的网友实现后贡献代码。

开源地址: https://github.com/jadepeng/XMusicDownloader,欢迎大家下载使用。

号外,安利作者的另外一个开源小工具,bing每日壁纸,自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事

转载于:https://www.cnblogs.com/xiaoqi/p/xmusicdownloader-v-1-1.html

开源音乐下载神器XMusicDownloader更新,支持歌单一键下载,支持无损音乐相关推荐

  1. 基于python的音乐数据分析_[译] 你的歌单无聊吗?关于音乐和机器学习的数据分析...

    原作者   Juan De Dios Santos 编译 CDA 编译团队 本文为  CDA 数据分析师原创作品,转载需授权 Spotify 是全球最大的正版流媒体音乐服务平台,深受全球用户的喜爱.那 ...

  2. 音乐app、app原型、音乐原型、云音乐、听歌、电台、本地音乐、点赞、收藏、歌单广场、动态、社区、评论、歌词、歌手、主播、视频、云村、下载、翻唱、歌曲播放、订阅、频道、引导页、登录注册、axure原型

    音乐app.app原型.音乐原型.云音乐.听歌.电台.本地音乐.点赞.收藏.歌单广场.动态.社区.评论.歌词.歌手.主播.视频.云村.下载.翻唱.歌曲播放.订阅.频道.引导页.登录注册.axure原型 ...

  3. 音乐app、音乐原型、在线音乐、云音乐、听歌、电台、本地音乐、点赞、收藏、歌单广场、动态、社区、评论、歌词、歌手、主播、视频、云村、下载、翻唱、歌曲播放、订阅、频道、引导页、登录注册、axure原型

    音乐app.音乐原型.在线音乐.云音乐.听歌.电台.本地音乐.点赞.收藏.歌单广场.动态.社区.评论.歌词.歌手.主播.视频.云村.下载.翻唱.歌曲播放.订阅.频道.引导页.登录注册.axure原型. ...

  4. iTunes音乐导入过程记录(专辑图片、歌手修改,iTunes使用,网易云歌单批量下载)

    所需工具 1.iTunes 2.音乐标签修改器. 3.下载好的音乐 网易云歌单在线下载. 4.一点耐心 详细步骤 1.先调整一下iTunes中的音乐存储位置 菜单栏选编辑-偏好设置-高级 更改iTun ...

  5. python代码示例下载-Python下载网易云歌单歌曲的示例代码

    今天写了个下载脚本,记录一下 效果: 直接上代码: # 网易云 根据歌单链接下载MP3歌曲 import requests from bs4 import BeautifulSoup def main ...

  6. web音乐播放器+后台歌曲,歌单管理

    项目地址 https://github.com/sevenyoungairye/web_music_palyer 技术点 - 基于h5, css3, js, bootstarp, jquery,- 后 ...

  7. 音乐歌单Android,QQ音乐Android V3.9上线 海量歌单等你淘

    腾讯科技讯 3月12日消息,Andriod版QQ音乐3.9正式上线,全新音乐馆新增歌单广场,由音乐达人打造的海量优质歌单,满足任何场景下的听歌需求.想知道大家在听什么歌还可以点击关注你喜爱的歌手和身边 ...

  8. 你们要的歌单:网易云音乐收藏量前100的歌单

    网易云音乐收藏量前100的歌单,这下不怕不够循环了, 纯音乐居多,国外音乐也多,特别小众的音乐还得靠自己发现. 温暖的假日下午,你手握咖啡看着书,听着轻音乐,多么惬意. 按照收藏量降序排序 90334 ...

  9. Python网络爬虫实践(1):爬取网易云音乐播放量大于1000万的歌单

    Python网络爬虫实践(1) 一.需求分析 爬取网易云音乐播放量大于1000万的歌单. 二.实施步骤 1.安装selenium selenium是一个用于Web应用自动化程序测试的工具,测试直接运行 ...

  10. 虾米音乐关停,QQ音乐、网易云上线虾米歌单迁移功能

    宋九九消息,阿里旗下平台虾米音乐发布公告称将关停虾米音乐,这个陪伴了我们12年的音乐平台就要走了,最后请在关停之前做好数据备份或导出.编辑宋九九 虾米音乐公告称: 将于2021年1月5日10点之前停止 ...

最新文章

  1. 学习一个 Linux 命令:shutdown 命令
  2. QT的QQuickImageProvider类的使用
  3. 音视频互动平台--P2P通信技术
  4. Java基础学习总结(117)——Feign入门使用详解
  5. RDP协议详细解析(一)
  6. python中模块导入问题(已解决)
  7. Express - NodeJS web开发框架
  8. [解题报告]Codeforces 105D Entertaining Geodetics
  9. python 数据比对 函数_用python比对csv文件中的数据
  10. 从出生年月中获取相对准确的年龄
  11. 大数据时代已经来临,正在改变我们的生活
  12. 解决IDEA 打开Springboot项目提示 Unmapped Spring configuration files found.
  13. 你见过凌晨4点的洛杉矶吗?写一个简单的投篮游戏
  14. 禁用 SQL 游标,告诉你外面听不到的原因
  15. 【精】HDFS Balancer原理、参数详解
  16. Simpoint - 0x1 切片完整步骤
  17. 使用python中TsTables 软件包追加写入数据出现“pandas.tseries has no attribute‘index‘”的问题
  18. 当效益不好的时候为什么公司选择裁员,而不是降薪
  19. python_爬虫 12 多线程爬虫
  20. vi操作(个人整理)

热门文章

  1. java开发常见的问题及解决办法 - java开发中遇到的难点有哪些_java开发常见的问题及解决办法
  2. 计算机32位好还是64位好,电脑系统选择32位好,还是64位的好呢?
  3. 【Axure高保真原型】移动端地图模板
  4. unity 素材分享
  5. 解决Windows10无法卸载Edge浏览器,亲测有效
  6. php自定义生成用户收据,Shopify POS收据自定义操作步骤
  7. UINavigationBar颜色设置 用色码设置有误差
  8. kgtemp文件转mp3工具
  9. HSF框架日常问题记录1
  10. jQuery视频格式的验证