网易云音乐Mac版上传歌曲到我的音乐云盘
前言
网易云音乐有很多歌没有版权,于是出了一个《我的音乐云盘》,让大家可以从别处下载网易云音乐没有版权的音乐(比如找有会员的朋友下载或自己开一个月的会员把所有要的歌曲下载下来),然后上传到《我的音乐云盘》,这样就能听没有版权的歌曲了,只不过自己上传只能自己听,别人看不到(如果让别人能看到那就是侵权了)。事实上QQ音乐、酷狗音乐都有云盘,只不过它们太抠门,云盘容量小的可怜。
但坑爹的是,这个功能只有Windows版本的网易云音乐客户端能上传,网页端,手机app端,苹果电脑(macOS)端都只能只云盘里的歌,但不能往云盘上传歌。
现在有解决方法了,就是有人通过分析网易云音乐的请求,总结出了它的api。
项目地址:https://github.com/Binaryify/NeteaseCloudMusicApi
使用方法
安装node
由于该项目是由nodejs语言编写,所以我们首先要安装node。
使用brew安装node(brew不是mac自带命令,如果你没有安装brew,请看我的这篇文章)
brew install node
下载项目源码
在你电脑中找一个合适的目录,运行以下命令下载(事实上任意目录都行)
git clone https://github.com/Binaryify/NeteaseCloudMusicApi.git
安装依赖
源码下载完成后,进入NeteaseCloudMusicApi
目录并安装依赖
cd NeteaseCloudMusicApi && npm install
编写上传代码
把以下代码保存成upload_song.js
文件并放到NeteaseCloudMusicApi/test/
目录下(注意把你的手机号和网易云密码填进去)
const { cloud, login_cellphone } = require('../main')
const fs = require('fs')
const path = require('path')
let inputParam = process.argv[2] == undefined ? '' : process.argv[2]
async function main() {
const result = await login_cellphone({
phone: '你的网易云账号(必须用手机号)',
password: '你的网易云密码',
})
//const filePath = './test.mp3'
const filePath = inputParam
try {
await cloud({
songFile: {
name: path.basename(filePath),
data: fs.readFileSync(filePath),
},
cookie: result.body.cookie,
})
} catch (error) {
console.log(error, 'error')
}
}
main()
开始使用
在终端进入NeteaseCloudMusicApi/test
目录
cd /path/to/NeteaseCloudMusicApi/test/
然后粘贴这个命令(注意最后有个空格)
node upload_song.js
然后把歌曲文件拖到终端上,按回车,就会开始上传
node upload_song.js /Users/bruce/Downloads/New\ Folder\ With\ Items\ 4/周杰伦、杨瑞代\ -\ 爱的飞行日记.mp3
上传演示(上传完成后就可以去你的网易云音乐《我的音乐云盘》中查看了)
由于我只是偶尔上传一首,所以就没有写批量上传。
注意: 后期使用时,我发现,有些歌传不上去,会报404,比如
node song_upload.js /Users/bruce/Downloads/A-Lin\ -\ P\.S\.我爱你.mp3
报错
error undefined
{
status: 404,
body: { msg: 'rep create failed', code: 404 },
cookie: []
} error
报错信息的意思是“重复创建失败”,它的意思是你云盘已经有这首歌了,但其实你去你的云盘搜索,你会发现根本就没有这首歌,我认为是网易服务器端的判断规则有问题,如果你遇到有一首歌上传报错,这并不代表其它的歌也会报错,你可以都传一下试试,能传上去的就传,报错的就另想办法(比如积累起来,下次统一开虚拟机在Windows里传)。
报错的等一下再重新上传就可以上传成功,报错可能是因为上传过于频繁或者API的一些限制
嗯,我有时候再重试一次可以,但有些重试几次也不行
不过这个方法真的牛,不用装win虚拟机了。👍👍👍
兄弟是真有意思