因版权原因,网易云api已经删库跑路,文章不再有时效性,项目可能不可用
YesPlayMusic是一款高颜值的第三方网易云播放器,但是解锁vip以及灰色音乐不能直接在网页端使用,受orzlee启发,通过修改hosts让网页端也能使用unblock,并且使用docker容器,运行部署十分方便
效果图如下
下面开始部署流程
注意该教程使用的镜像fogforest/yesplaymusic:v0.4.7
、 pan93412/unblock-netease-music-enhanced:v0.27.1及源码yesplaymusic:v0.4.7
可能会与当前最新版本有出入,请参考项目wiki
pan93412/unblock-netease-music-enhanced可以尽量使用最新的版本
运行yesplay以及unblock
拉取镜像
docker pull pan93412/unblock-netease-music-enhanced:v0.27.1
docker pull fogforest/yesplaymusic:0.4.7
编辑docker-compose.yaml
vim docker-compose.yaml
写入以下内容,记得更改配置第六行command中解锁域名,推荐是音乐站的子路径,比如-e https://www.rainmos.com/unblock
,记住你写的域名和路径,后续会用到。
关于如何获取自己的域名以及如何获取自己的域名的ssl证书这里不做介绍。
如果不愿意申请域名以及证书可以将下面配置第六行中的-e https://解锁域名
删去
version: '3'
services:
unblock:
image: pan93412/unblock-netease-music-enhanced:v0.27.1
container_name: unblock
command: "-o pyncmd kugou kuwo bilibili migu -p 80:443 -a 172.168.10.163 -f 115.236.118.34 -e https://解锁域名"
networks:
music_network:
ipv4_address: 172.168.10.163
dns:
- 119.29.29.29
- 223.5.5.5
yesplaymusic:
image: fogforest/yesplaymusic:0.4.7
container_name: yesplaymusic
ports:
- "3000:80"
networks:
music_network:
ipv4_address: 172.168.10.165
extra_hosts:
- "music.163.com:172.168.10.163"
- "interface.music.163.com:172.168.10.163"
- "interface3.music.163.com:172.168.10.163"
dns:
- 119.29.29.29
- 223.5.5.5
environment:
NODE_TLS_REJECT_UNAUTHORIZED: "0"
networks:
music_network:
ipam:
config:
- subnet: 172.168.10.0/24
然后执行docker-compose up -d
运行,基本来说已经可以使用了,如果不使用域名以及ssl就可以结束了,直接IP:3000就能使用,记得防火墙开放端口。
修改nginx配置以支持https
因为解锁替换的资源大部分都是http,如果网站开启了https就会被浏览器自动转换成https,然后请求资源失败,因此需要用反代将http链接替换为https。
如果在上一步中配置的是音乐站的子路径,比如https://www.rainmos.com/unblock ,就只需要在启用了ssl的域名server内加入如下代码
location /unblock {
proxy_pass http://172.168.10.163:80; # 代理到 Unblock 服务地址
}
完整nginx配置示例如下
server {
listen 443 ssl ;
server_name xxx.com;#音乐站的域名
ssl_certificate /xxx/xxx.cer; #证书
ssl_certificate_key /xxx/xxx.key; #密钥
location / {
proxy_pass http://127.0.0.1:3000/;
}
location /unblock {#音乐站的解锁路径
proxy_pass http://172.168.10.163:80; # 代理到 Unblock 服务地址
}
ssl_session_timeout 5m;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
ssl_prefer_server_ciphers on;
error_page 497 https://hosturi?$args;
}
修改后nginx -s reload
或者重启nginx即可
到此配置就完成了,配置正常的话,登陆后就可以播放所有的音乐了
可选
下面操作只是提升一些使用体验,并且需要改动源码并编译打包,不想做可以跳过。
VIP Only依旧显示灰色
更改/src/api/track.js
第7行左右的
export function isTrackPlayable(track) {
let result = {
playable: true,
reason: '',
};
if (track?.privilege?.pl > 0) {
return result;
}
// cloud storage judgement logic
if (isAccountLoggedIn() && track?.privilege?.cs) {
return result;
}
if (track.fee === 1 || track.privilege?.fee === 1) {
if (isAccountLoggedIn() && store.state.data.user.vipType === 11) {
result.playable = true;
} else {
result.playable = false;
result.reason = 'VIP Only';
}
} else if (track.fee === 4 || track.privilege?.fee === 4) {
result.playable = false;
result.reason = '付费专辑';
} else if (
track.noCopyrightRcmd !== null &&
track.noCopyrightRcmd !== undefined
) {
result.playable = false;
result.reason = '无版权';
} else if (track.privilege?.st < 0 && isAccountLoggedIn()) {
result.playable = false;
result.reason = '已下架';
}
return result;
}
改为
export function isTrackPlayable() {
let result = {
playable: true,
reason: '',
};
return result;
}
未登录状态无法播放VIP音乐
/src/utils/Player.js
第7行左右的import { isAccountLoggedIn } from '@/utils/auth';
删掉或者注释掉;
第387行左右的
_getAudioSourceFromNetease(track) {
if (isAccountLoggedIn()) {
return getMP3(track.id).then(result => {
if (!result.data[0]) return null;
if (!result.data[0].url) return null;
if (result.data[0].freeTrialInfo !== null) return null; // 跳过只能试听的歌曲
const source = result.data[0].url.replace(/^http:/, 'https:');
if (store.state.settings.automaticallyCacheSongs) {
cacheTrackSource(track, source, result.data[0].br);
}
return source;
});
} else {
return new Promise(resolve => {
resolve(`https://music.163.com/song/media/outer/url?id=${track.id}`);
});
}
}
改为
_getAudioSourceFromNetease(track) {
return getMP3(track.id).then(result => {
if (!result.data[0]) return null;
if (!result.data[0].url) return null;
if (result.data[0].freeTrialInfo !== null) return null; // 跳过只能试听的歌曲
const source = result.data[0].url.replace(/^http:/, 'https:');
if (store.state.settings.automaticallyCacheSongs) {
cacheTrackSource(track, source, result.data[0].br);
}
return source;
});
}
编译打包后替换yesplaymusic容器目录/usr/share/nginx/html
中所有文件,然后docker restart yesplaymusic
这里提供一个解锁后的demo,不能登录只供试用,因为服务器在国外,速度一般概率不可用。。这个服务器可能被各解锁源封了😡
安装博主的 方式进行部署,为啥不能用呀 也不知道问题出在哪里, 点击播放 显示时间就是不播放
其他不用解锁的音乐能播放吗 大概是 unblock 出了问题,可以看看日志
像我的服务器是解锁源 (youtube) 访问失败,这就没办法了
自用国外VPS服务器,如何选择安装youtube音源?
docker-compose.yaml的unblock配置的command,文中示例第6行:command: “-o pyncmd kugou kuwo bilibili migu…加上youtube,如果要高优先级就放最前面。我看他们项目介绍还有一个youtube-dl ,这个我没研究过
好像现在放不了要版权的音乐了,我看unblock日志获取到播放地址了 但是ysm那边不能直接调用地址播放了 我在大佬你的demo站也是没办法播放
什么歌曲异常?可能是其他源也没有吧。我自用的没问题,这个demo可能是我设置的问题小概率不能播放,但也能用
查看图片
我看了下 我那个好像 无限请求跳转了 https://picdm.sunbangyan.cn/2023/09/09/qu0nr7.png
unblock 是解析出来了播放地址的 不知道为啥不能直接播放 只能播放网易云的音乐
查看图片
能播放了吗?
请问有解决办法了没
用pan93412/unblock-netease-music-enhanced:v0.27.1和fogforest/yesplaymusic:0.4.7可以解锁播放
用这两个 image 镜像,果然可以播放,用 latest 版本的 大部分歌曲会显示 无法支持的格式
我用的vercel部署的,看来是没办法用上这方法了😭
可以尝试下
docker启动!🤪
大佬想請問vip歌曲通過unblock 總是request 超時要怎麼解決🥺
用你的demo 是可以的
我的ip 在台灣用ytdlp也出不來
台湾网友用spotify不香吗🤔
超时是yesmusic容器到unblock的话,可以测试下容器之间能不能相互ping通;
如果是unblock到其他平台请求超时,可以去容器内部测试能不能ping通外网,还是不能解决的话我觉得去他们的项目看看应该能找到答案
好的 我會再試看看!
謝謝你~
Spotify 比較少一些翻唱的華語歌
尤其是音樂節目的那種live
所以很常會去依賴網易雲
大佬怎么改docker镜像源码呀
你的意思是制作新的镜像吗?这个你得去网上搜搜。
文章里的是替换容器里原有的文件,用命令
docker cp [host 源路径] [容器名称]:[容器内路径]
,然后重启容器就完成了把服务器搜完了 找不到那两个文件 不知道docker的原理 我把github的源码拉了 但是又不知道怎么去打包
哪两个文件?
做完第一步打开防火墙访问 ip:端口 就可以使用
至于打包yesplay可以看:github链接 #部署到自己的服务器
里面有介绍怎么编译打包为web文件
但是没有经验还是别改源码,文章后面的可选对于实际使用体验没有太大影响。
好吧 非常感谢|´・ω・)ノ