
大家好,继之前写了 b 站音频下载脚本后,这次的自动化更进一步,支持直接上传到音乐云盘(目前仅支持网易云)。该项目也支持一键“解锁”歌单中无法播放的歌曲(适合不喜欢用 proxy 方式解锁的同学)。
如果对你有帮助,欢迎 Star 呀: https://github.com/foamzou/melody/

大家好,我叫 Melody ,是你的音乐精灵,旨在帮助你更好地管理音乐。目前的主要能力是帮助你将喜欢的歌曲或者音频上传到音乐平台的云盘。
为了避免不必要的纠纷和账号安全问题,本项目不会以任何形式提供在线 demo 服务,也请大家不要使用公共服务。本地部署很简单。
确保以下两个依赖是安装好的
其中 init.js 会下载核心组件,初始化 node 依赖,尽可能不需要你关心安装细节
git clone https://github.com/foamzou/melody.git cd melody node init.js cp backend/.profile/accounts.sample.json backend/.profile/accounts.json 然后编辑 backend/.profile/accounts.json 。
Melody Key,是你在网页访问该服务的唯一凭证account 和 password 可以后续在网页修改建议使用 pm2 将本服务常驻后台
node backend/src/index.js 最后,在浏览器访问 http://127.0.0.1:5566 就可以使用啦~
如果试听后是你想要的,点击上传按钮会将该歌曲上传到你的网易云音乐云盘 
有时候我们在 b 站 听到好听的歌,也可以上传到云盘 
点击 解锁全部(实验性功能) 后,服务会自动匹配每首歌,并把歌曲上传到云盘,最后做个 match ,以保证你还能看到歌词、评论 
当某首歌自动解锁失败后,还可以手动点击搜索按钮,找到符合的歌曲后,手动点击上传按钮 
计划在后面支持以下功能
1 mlhadoop May 4, 2022 执行力 |
3 Either May 4, 2022 via iPhone 昨晚在手动上传,今天就看到解决方案。 |
4 archbishop May 4, 2022 via Android 好人一生平安 |
5 yibie May 4, 2022 已经发送感谢 |
7 foam OP |
8 zytomorrow May 4, 2022 棒!!!等一个 docker 镜像 |
9 tediorelee May 4, 2022 坐等支持 Youtube ,很多 mix 我都在国内 app 上找不到 |
10 leaves98 May 4, 2022 厉害了 老哥 |
11 waler May 4, 2022 非常感谢!!! |
12 A01514035 May 4, 2022 mark , 等一个 docker 镜像 |
13 foam OP @tediorelee #9 指的是 YouTube Music 吗?还是 YouTube Video 转音频? 后者已经支持了。 |
14 akumans May 5, 2022 via iPhone 非常不错~ |
15 ilyyfan May 5, 2022 牛逼,感谢老哥 |
16 e1d4py0KiD6KgqkQ May 5, 2022 via Android 只会双击 apk你这个不懂 |
17 tuutoo May 5, 2022 希望 docker 版的可以优先做, 这样能降低不少门槛, 前两个依赖可能就难倒好多人. 环境可能不一样, 我 CentOS 上部署成功了, 但是报 Key 不对, 可能我部署的过程有问题. 本地试了一下, 先费了老大劲在 macOS 上装 ffmpeg, 服务跑起来了,Key 没问题, 到绑定帐号这一步, 登陆时候又报错了. uid(XXXXXXXX)'s cookie not found from .profile uid(XXXXXXXX) login... ERROR requestWyyApi failed: { status: 502, body: { code: 502, msg: Error: unable to verify the first certificate at TLSSocket.onConnectSecure (node:_tls_wrap:1530:34) at TLSSocket.emit (node:events:390:28) at TLSSocket._finishInit (node:_tls_wrap:944:8) at TLSWrap.ssl.onhandshakedone (node:_tls_wrap:725:12) { code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE', config: [Object], request: [Writable], response: undefined, isAxiosError: true, toJSON: [Function: toJSON] } }, cookie: [] } |
18 cassyfar May 5, 2022 电话怎么填国际电话区号? |
19 cassyfar May 5, 2022 一运行直接把终端关闭了。。。错误信息看不到 |
20 ColorfulBoar May 5, 2022 @cassyfar 目测这个版本就没做……你手工搜索一下把所有包含 account 和 password 的地方塞个 countrycode 进去就能凑合着用了(虽然对我来说好像只有来自 bilibili 的能下下来,然后上传一定失败,约等于不可用,如果你不在国内我猜也是这个结果 |
21 foam OP @tuutoo 是的,docker 得先支持了。 你的是证书问题,是不是开了 UnblockNeteaseMusic 服务劫持了网易云请求?或者本地证书有问题。 |
22 foam OP @tuutoo 可以先试试。 控制台执行,windows 下应该是 set NODE_TLS_REJECT_UNAUTHORIZED=0,Linux 和 mac 是 export NODE_TLS_REJECT_UNAUTHORIZED=0 ref https://github.com/Binaryify/NeteaseCloudMusicApi/issues/1070 |
23 foam OP |
24 cassyfar May 5, 2022 |
25 qbhy May 5, 2022 牛 |
26 suyuyu May 5, 2022 以前写了个类似的东西写到一半烂尾了,,, |
29 niknik May 5, 2022 mark 等 docker |
30 mywaiting May 5, 2022 一直等这样一个开源作品,终于~~~ 多谢!!! |
31 4196 May 5, 2022 其他歌单都可以访问,唯独 [我喜欢的音乐] 这个歌单请求返回结果是空,控制台报错 [ 省略......, { id: 1826753, fee: 8, payed: 0, realPayed: 0, st: 0, pl: 128000, dl: 0, sp: 7, cp: 1, subp: 1, cs: false, maxbr: 999000, fl: 128000, pc: null, toast: false, flag: 0, paidBigBang: false, preSell: false, playMaxbr: 999000, downloadMaxbr: 999000, maxBrLevel: 'lossless', playMaxBrLevel: 'lossless', downloadMaxBrLevel: 'lossless', plLevel: 'standard', dlLevel: 'none', flLevel: 'standard', rscl: null, freeTrialPrivilege: [Object], chargeInfoList: [Array] }, ... 900 more items ], sharedPrivilege: null, resEntrance: null } {"msg":"参数错误","code":400}{"msg":"参数错误","code":400} ERROR get user all playlist failed, uid: |
32 N032138 May 5, 2022 做个 docker 版食用更方便呀 |
33 Echoleung May 5, 2022 马克,同等 docker |
34 oluoluo May 5, 2022 码住 |
35 sypopo May 5, 2022 同等 docker |
36 melsp May 5, 2022 via Android 感谢 |
37 lfsc May 5, 2022 大佬 |
38 tuutoo May 5, 2022 via Android |
39 standin000 May 5, 2022 楼主厉害! |
40 rfrftt May 5, 2022 楼主厉害 贴下 dockerfile ----------------------- FROM node:17.9.0-buster RUN apt update && apt install -y ffmpeg git vim && ffmpeg -version RUN git clone 'https://github.com/foamzou/melody.git' /melody && cd /melody && node init.js EXPOSE 5566 CMD exec node /melody/backend/src/index.js ----------------------- volume 映射配置文件 /melody/backend/.profile/accounts.json |
41 a566 May 5, 2022 牛逼 大大的点赞了 |
42 foam OP @rfrftt 感谢老哥先贴了个 docker file 。 另确认下,服务里会使用临时目录(node.js 的 tmp 方法,不确定获取到的目录是否可用)作为临时歌曲存储目录,可能要确认下上传功能是否正常。 |
46 96368a May 5, 2022 太棒了,这下不用网易 qq 来回切了 |
47 xmt328 May 5, 2022 本地编译了一个 docker 版本先体验着,坐等作者出官方版本 |
48 xtinput May 5, 2022 不怕律师函? |
49 Allan0423 May 5, 2022 好人一生平安 |
50 cue May 5, 2022 via Android 等 docker |
51 fandr May 5, 2022 JAY |
52 tomchiler May 5, 2022 好用好用 |
53 yangzj1992 May 5, 2022 感谢大佬,本地部署了下,试了下不少歌上传时还是失败。= = |
54 yangzj1992 May 5, 2022 @yangzj1992 #53 #53 补一下 case: 『 A/Z 』 前几首都是 |
55 soseek May 5, 2022 via iPhone 我记得好像网易云音乐的网盘有些歌曲上传会被替换或者限制不是 VIP 无法播放? |
56 nishuoshenme May 5, 2022 再次检查 media-get 是否安装成功 media-get 安装失败。请手动从 https://github.com/foamzou/media-get/releases 下载最新版本到 C:\Users\xxx\melody\backend\bin\media-get.exe |
57 nishuoshenme May 5, 2022 可是本地目录是已经下载好了的 |
59 liyvhg May 5, 2022 @rfrftt #40 感谢楼主分享!参考楼主的 docker file ,我也来贴一个,比楼主的臃肿一些 FROM debian:latest RUN apt update && apt install -y ffmpeg git vim curl && ffmpeg -version RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - RUN apt update && apt install -y nodejs RUN git clone 'https://github.com/foamzou/melody.git' /melody && cd /melody && node init.js EXPOSE 5566 ENV LANG en_US.utf8 ENV SHELL /bin/bash CMD exec node /melody/backend/src/index.js ----------------------- volume 映射配置文件 /melody/backend/.profile/accounts.json 如果没有映射上述文件会直接取法启动。 |
60 junhua13 May 5, 2022 via iPhone 希望能支持上传到自己的云盘,webdav 那种 |
61 yazoox May 5, 2022 via Android 真的厉害 |
62 foam OP @yangzj1992 #54 A/Z 的修复了,麻烦更新下代码,删除 backend/bin/media 之后重新 node init.js 一下。 原因是一个低级代码错误,没有成功移除文件名中的 / 。 不过这样的话,文件名就变 AZ 了。先这样吧 |
63 foam OP @nishuoshenme #56 应该是偶现 bug ,一些情况下会有延迟。不用删除 media-get 文件,再次执行 node init.js 应该就可以的。 |
64 foam OP @xjh2949744520 #60 可以到 issue 提下 request |
65 caomingjun May 6, 2022 via Android 很好的项目!出 docker 就部署到服务器上! 未来会支持网易云音乐云盘以外的其他存储方式吗,比如 onedrive/webdav/对象存储 /本地存储? 谢谢! |
66 mscsky May 6, 2022 真刑,前段时间网易还批 qq |
67 lw3088 May 6, 2022 先 star 了 |
68 devilte May 6, 2022 献上 star |
69 ltkun May 6, 2022 via Android exe ? |
70 nishuoshenme May 6, 2022 @foam 应该是我本地的问题,昨晚一直没成功,换虚拟机重新搞了一下,然后就可以了,再次感谢大佬哈哈 |
71 outcastveron May 6, 2022 高级,star 先,等 docker 开玩:)) |
72 foam OP |
73 caomingjun May 6, 2022 关于其他存储方式,回复 #60 #64 #65: 我今天看了一下代码,似乎作者在编写时没有考虑到这个需求,改起来可能比较麻烦。我目前的思路是,指定一个目录作为本地备份目录,前端中设置按钮让用户手动同步该目录和网易云音乐云盘(也可以考虑加上定时任务)。Docker 下该目录可以挂载到主机上,至于云存储和该目录的同步,可以交给 rclone 等其他程序负责,不用重复造轮子。 另外提出两个建议: 1. 前端可以显示一下任务状态,我看 JobManager 有相关函数,但是前端没有这个功能。 2. 希望能显示网易云音乐云盘上的当前曲目 |
74 caomingjun May 6, 2022 还有一个建议,可以把输入 melody key 的框改成密码框,这样浏览器就能自动保存密码了 |
75 alfawei May 6, 2022 via iPhone 厉害 可以支持手机版 app ? |
76 foam OP |
79 killeder May 7, 2022 安卓 APP v2er(版本 2.0.2.202)一打开这个帖子就闪退 |
80 DrEAmSs59 May 7, 2022 大佬 |
81 zooo May 7, 2022 蹲一个 docker 版 |
83 foam OP docker 已支持,可见 https://github.com/foamzou/melody#%E6%96%B9%E5%BC%8F%E4%B8%80docker-%E5%AE%89%E8%A3%85 @A01514035 #12 @tuutoo #17 @N032138 #32 @Echoleung #33 @sypopo #35 @niknik #29 @sypopo #35 @rfrftt #40 @xmt328 #47 @cue #50 @liyvhg #59 @caomingjun #65 @outcastveron #71 @zooo #81 |
87 tuutoo May 9, 2022 有了 docker 版的 部署起来太方便了. |
89 leonzh May 12, 2022 蹲一个 docker 版的 |
92 keepro May 12, 2022 白嫖伸手党申请美化前端页面,抄个 music.163 ,顺便适配移动端 UI 真的不错,感觉比 navidrome 更适合 手动狗头保护 我真不会改 T_T! |
95 Xushet May 13, 2022 via Android 小心绿尸寒啊 |
98 Chenxiaolannnnn May 25, 2022 @foam #85 小白问下,部署在 koyeb 里,怎么改 melody key |
99 foam OP @Chenxiaolannnnn 我还未使用过哈,你可以研究下,有结果可以提下 PR 。感谢 |
100 DonkeyBenjamin Aug 7, 2022 已经用起来了,不错 |