wpf 网易云歌词_搭建自己的音乐云

本人是个爱听歌的人,听得也都是大杂烩,什么风格也有,blues、acg、、bossanova、流行、民歌啥的。以前一直在用网易云,后来版权大战搞得网易云版权少的可怜,歌单一半都是灰色的,无奈又去用了QQ,但是还是有各种缺点,后面又发现网易云可以自动匹配上传到云盘的歌,然后又转战网易云盘,从各种渠道下载mp3扔到云盘去,这样坚持了好一阵儿,但是后面云盘也开始检测版权,QQ微云云盘也差不多都这样,感觉丁磊是要彻底断我的后路,所以才萌生了想自己搭一个音乐云盘的想法.

既然有想法就开干,本来我是想在家里做内网穿透用家里的NAS做我的音乐云盘,但是家里没有公网IP,试了试FRP反代到云服务器,国外的云服务器速度实在不咋地,国内的阿里tx带宽费用又高的离谱,所以放弃了这个方案,最后找到了坚果云,主要是因为同步云盘的特性天然的就适合做这个,虽然空间不大,但倒是也不贵,上传和下载基本都是保持在5M/S左右,基本能满足我的需求了

336d359a95d15d2230fefdecd92acd2d.png
坚果云盘

买了坚果云盘之后先传了10G的歌上去,然后开始考虑客户端

我平常工作和玩游戏都是用Windows,手机也都是Android,所以只需要找这两个客户端就够了,因为是利用同步云盘同步,所以我只需要本地离线播放器就可以,并且得能读取m3u之类的歌单列表,到时候可以把歌单也放到云盘里,这样就可以多端同步歌单了,然后最好是开源的,好定制一些功能

在github上翻了一大顿,找到了这个

digimezzo/dopamine-windows​github.com
4cb448ac40f143bd8c647060f5cdef8c.png

68883117a33e76264daa90f180638fbc.png
Dopamine播放器

长得也挺符合我的胃口的。。。。

用了一天后发现两个主要的问题

  • 歌词虽然可以从网易云获取,但是大部分外语歌的歌词都只有一种,要么只有翻译要么只有原文
  • 虽然可以导入m3u,但是导入之后会创建一个备份,修改也是修改的这个备份,所以无法同步

d3597753f5fa63da780c32b84a0a04aa.png
可以看到歌词只有翻译之后的

无奈clone下他的源码开始修改这两个问题

d5853ea90f44a4caa68f187a91259194.png
项目目录

用VS打开发现是WPF做的。。。

170ba726d9a3ddb432caa997cbc82eea.png

之前从来没有接触过WPF,不过程序基本都是一通百通的,所以慢慢搞,既然是歌词相关那就搜一下Lyric关键词

c83a247b4b928434ffe808aad4ce65f4.png

找到了NeteaseLyricsAPI

851e1c8106687e31758cb9999078daed.png

看代码可以看到他是通过一个HTTP请求的网易云的api地址,这块先略过,看下面关键的歌词处理部分,resJson就是网易云返回的歌词数据,我调试看了一下,他实际上是返回了lyric和tlyric(translate)的,也就是说数据是有的,只是显示有点问题。

1ef309d8f3aa5173458c8033b389426e.png

看这个判断,如果有翻译歌词,就return翻译的歌词,没有翻译的话才return原来的歌词,知道逻辑就好改了。

在这把歌词处理一下。

59ab849e2f3337ae77fa49a80598f014.png

把两个语言的歌词合成一个返回。

好了看看效果

f64c997e41c22b0acb3a36f940092e91.png

好像有内味儿了。

接下来解决最重要的歌单同步问题,我本来打算把歌单也放到云盘,跟歌曲同一个父级目录,这样可以用相对路径来定位歌曲,但是这个app会导入之后自己备份一个歌单并且转成了绝对路径,那么要做的就是把他原来的歌单目录改成云盘同步的本地文件夹

搜一下playlist关键词

58a91f355e16c561b8220b136132cf3c.png

找到了这个貌似处理歌单的模块

63316ced9016a6977445dc7003af412f.png

看函数命名找到了这个获取所有静态歌单的函数

他在PlayListFolder这个文件夹下查找所有的m3u文件然后返回

然后查找PlayListFolder赋值的地方找到了构造函数

7b85d34ce23a1447472a842cb3ef7e07.png

可以看到他是从系统的环境变量获取了 windows"我的音乐" 目录的路径

那么我只需要把这个路径改成我的云盘同步路径应该就可以了

0dac92058b059bcdd10ca3ff85d34ffd.png

先临时改改测试

77e8c580af687b2c0ec67e3ea0c5874a.png

歌单都出来了,但是还发现一个问题

28c73dd1bfb02dc3acee4b5598936946.png

我把另一首歌添加到了这个歌单,查看一下m3u文件

f2abb15d91d15b87076595647ff29246.png

发现新添加的歌曲是采用绝对路径存储的,这样很不利于我们同步,所以我们要把他改成相对路径来存

44ae680b9043ce44b709b88e395d55b8.png

然后找到这个AddTracksToStaticPlaylist函数,添加歌曲到静态歌单都会走这个函数

3d1314254a13a27d05c4e15797038338.png

可以看到他直接WirteLine一个track.Path,这个Path实际上就是歌曲文件的绝对路径

给他做点小小的改动,加一个函数获取歌曲相对于歌单的路径给他写进去

c74a722eff3b0d9a1122f4b0376e49fb.png

OK,看看效果

48bf9c341b2dbda42cdd3fa6dfe50bb0.png

成功了,剩下的就是把上面临时改的路径改成配置项或者别的什么了,这块略过

那么到这里PC端已经算是基本处理完成可以用了,当我修改歌单的时候,坚果云会自动同步到你其他的电脑上

2efef6163156d8c9fa7b766b636b5de1.png

这样你其他电脑的Dopamine打开也会是同步过的列表。

Android的下回再说吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值