XMusicDownloader,一款 支持从百度、网易、qq和酷狗等音乐网站搜索并下载歌曲的程序。
缘起:
一直用网易音乐听歌,但是诸如李健、周杰伦的不少歌曲,网易都没有版权,要从QQ等音乐去下载,因此一直想写一个小程序,可以从其他音乐网站下载相关歌曲,趁放假,花了几小时做了这样一个程序。
BTW: 之前写过一个从酷狗和网易音乐提取缓存文件的程序,感兴趣的可以查看。
功能
- 聚合搜索多家音乐网站
- 支持音乐批量下载
- 搜索结果综合排序
- 可以编写Provider程序,支持其他音乐网站
实现IMusicProvider即可,主要是搜索和获取下载链接的方法。
public interface IMusicProvider { string Name { get; } string getDownloadUrl(Song song); List<Song> SearchSongs(string keyword, int page, int pageSize); }界面截图

下载程序
https://github.com/jadepeng/XMusicDownloader/releases
实现方案介绍
定义song实体
public class Song { public string id { get; set; } public string name { get; set; } public string singer { get; set; } public string album { get; set; } public string source { get; set; } public double duration { get; set; } public double size { get; set; } public string url { get; set; } public int rate { get; set; } public int index { get; set; } public string getFileName() { return singer + "-" + name + ".mp3"; } public string getMergedKey() { return singer.Replace(" ", "") + name.Replace(" ", ""); } }封装各个音乐网站
抽象为MusicProvider,音乐提供方:),定义Name为名称,SearchSongs搜索歌曲,getDownloadUrl获取音乐下载地址。
public interface IMusicProvider { string Name { get; } string getDownloadUrl(Song song); List<Song> SearchSongs(string keyword, int page, int pageSize); }然后就是依次实现百度、网易等音乐网站,以QQ为例。
public class QQProvider : IMusicProvider { static HttpConfig DEFAULT_CONFIG = new HttpConfig { Referer = "http://m.y.qq.com", }; public string Name { get; } = "QQ"; static string[] prefixes = new string[] { "M800", "M500", "C400" }; public List<Song> SearchSongs(string
