开源音乐下载神器XMusicDownloader更新,支持歌单一键下载,支持无损音乐
开源音乐下载神器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更新,支持歌单一键下载,支持无损音乐相关推荐
- 基于python的音乐数据分析_[译] 你的歌单无聊吗?关于音乐和机器学习的数据分析...
原作者 Juan De Dios Santos 编译 CDA 编译团队 本文为 CDA 数据分析师原创作品,转载需授权 Spotify 是全球最大的正版流媒体音乐服务平台,深受全球用户的喜爱.那 ...
- 音乐app、app原型、音乐原型、云音乐、听歌、电台、本地音乐、点赞、收藏、歌单广场、动态、社区、评论、歌词、歌手、主播、视频、云村、下载、翻唱、歌曲播放、订阅、频道、引导页、登录注册、axure原型
音乐app.app原型.音乐原型.云音乐.听歌.电台.本地音乐.点赞.收藏.歌单广场.动态.社区.评论.歌词.歌手.主播.视频.云村.下载.翻唱.歌曲播放.订阅.频道.引导页.登录注册.axure原型 ...
- 音乐app、音乐原型、在线音乐、云音乐、听歌、电台、本地音乐、点赞、收藏、歌单广场、动态、社区、评论、歌词、歌手、主播、视频、云村、下载、翻唱、歌曲播放、订阅、频道、引导页、登录注册、axure原型
音乐app.音乐原型.在线音乐.云音乐.听歌.电台.本地音乐.点赞.收藏.歌单广场.动态.社区.评论.歌词.歌手.主播.视频.云村.下载.翻唱.歌曲播放.订阅.频道.引导页.登录注册.axure原型. ...
- iTunes音乐导入过程记录(专辑图片、歌手修改,iTunes使用,网易云歌单批量下载)
所需工具 1.iTunes 2.音乐标签修改器. 3.下载好的音乐 网易云歌单在线下载. 4.一点耐心 详细步骤 1.先调整一下iTunes中的音乐存储位置 菜单栏选编辑-偏好设置-高级 更改iTun ...
- python代码示例下载-Python下载网易云歌单歌曲的示例代码
今天写了个下载脚本,记录一下 效果: 直接上代码: # 网易云 根据歌单链接下载MP3歌曲 import requests from bs4 import BeautifulSoup def main ...
- web音乐播放器+后台歌曲,歌单管理
项目地址 https://github.com/sevenyoungairye/web_music_palyer 技术点 - 基于h5, css3, js, bootstarp, jquery,- 后 ...
- 音乐歌单Android,QQ音乐Android V3.9上线 海量歌单等你淘
腾讯科技讯 3月12日消息,Andriod版QQ音乐3.9正式上线,全新音乐馆新增歌单广场,由音乐达人打造的海量优质歌单,满足任何场景下的听歌需求.想知道大家在听什么歌还可以点击关注你喜爱的歌手和身边 ...
- 你们要的歌单:网易云音乐收藏量前100的歌单
网易云音乐收藏量前100的歌单,这下不怕不够循环了, 纯音乐居多,国外音乐也多,特别小众的音乐还得靠自己发现. 温暖的假日下午,你手握咖啡看着书,听着轻音乐,多么惬意. 按照收藏量降序排序 90334 ...
- Python网络爬虫实践(1):爬取网易云音乐播放量大于1000万的歌单
Python网络爬虫实践(1) 一.需求分析 爬取网易云音乐播放量大于1000万的歌单. 二.实施步骤 1.安装selenium selenium是一个用于Web应用自动化程序测试的工具,测试直接运行 ...
- 虾米音乐关停,QQ音乐、网易云上线虾米歌单迁移功能
宋九九消息,阿里旗下平台虾米音乐发布公告称将关停虾米音乐,这个陪伴了我们12年的音乐平台就要走了,最后请在关停之前做好数据备份或导出.编辑宋九九 虾米音乐公告称: 将于2021年1月5日10点之前停止 ...
最新文章
- 学习一个 Linux 命令:shutdown 命令
- QT的QQuickImageProvider类的使用
- 音视频互动平台--P2P通信技术
- Java基础学习总结(117)——Feign入门使用详解
- RDP协议详细解析(一)
- python中模块导入问题(已解决)
- Express - NodeJS web开发框架
- [解题报告]Codeforces 105D Entertaining Geodetics
- python 数据比对 函数_用python比对csv文件中的数据
- 从出生年月中获取相对准确的年龄
- 大数据时代已经来临,正在改变我们的生活
- 解决IDEA 打开Springboot项目提示 Unmapped Spring configuration files found.
- 你见过凌晨4点的洛杉矶吗?写一个简单的投篮游戏
- 禁用 SQL 游标,告诉你外面听不到的原因
- 【精】HDFS Balancer原理、参数详解
- Simpoint - 0x1 切片完整步骤
- 使用python中TsTables 软件包追加写入数据出现“pandas.tseries has no attribute‘index‘”的问题
- 当效益不好的时候为什么公司选择裁员,而不是降薪
- python_爬虫 12 多线程爬虫
- vi操作(个人整理)