高颜值的第三方网易云播放器YesPlayMusic

什么是 YesPlayMusic ?

YesPlayMusic 是一款高颜值的第三方网易云播放器,设计精美,播放体验优秀。使用 Vue.js 全家桶和 Electron 框架开发,支持 WindowsmacOSLinux

先上张图给大家看看

不愿意折腾的话可以直接去 https://github.com/qier222/YesPlayMusic/releases 下载对应平台的客户端,也可以去官方的 Demo 站点在线体验:https://music.qier222.com/

当然现在还有一个选择,跟随老苏一起折腾 Docker 版,搭建私有化的在线音乐库,一方面安全上可能更放心,另一方面也不需要到处安装客户端

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

官方只提供了 WindowsMacOSLinux 平台的客户端,所以 Docker 只能我们自己来构建

  • YesPlayMusic 依赖于另一个开源项目 Binaryify/NeteaseCloudMusicApi(网易云 API) 的部署, 因此 API URL 是不能预先设定的。老苏按照参考文档,采用了占位符的方式
  • 最近在学习多阶段构建方式,正好拿这个项目实践一下
FROM node:16.5 as build-deps
MAINTAINER laosu<wbsu2003@gmail.com>

# environment
ENV VUE_APP_NETEASE_API_URL netease_vanau
ENV VUE_APP_ELECTRON_API_URL netease_vaeau
ENV VUE_APP_ELECTRON_API_URL_DEV netease_vaeaud
ENV VUE_APP_LASTFM_API_KEY netease_valak
ENV VUE_APP_LASTFM_API_SHARED_SECRET netease_valass
ENV DEV_SERVER_PORT netease_dsp

WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn
COPY . ./
RUN yarn build

FROM nginx:1.12-alpine
COPY --from=build-deps /app/dist /usr/share/nginx/html
COPY --from=build-deps /app/replace_api_url.sh /  
CMD ["sh", "replace_api_url.sh"]
EXPOSE 80

replace_api_url.sh 用于替换 ENV 设置的占位符

#!/usr/bin/env sh

find '/usr/share/nginx/html' -name '*.js' -exec sed -i -e 's,netease_vanau,'"$VUE_APP_NETEASE_API_URL"',g' {} \;

find '/usr/share/nginx/html' -name '*.js' -exec sed -i -e 's,netease_vaeau,'"$VUE_APP_ELECTRON_API_URL"',g' {} \;

find '/usr/share/nginx/html' -name '*.js' -exec sed -i -e 's,netease_vaeaud,'"$VUE_APP_ELECTRON_API_URL_DEV"',g' {} \;

find '/usr/share/nginx/html' -name '*.js' -exec sed -i -e 's,netease_valak,'"$VUE_APP_LASTFM_API_KEY"',g' {} \;

find '/usr/share/nginx/html' -name '*.js' -exec sed -i -e 's,netease_valass,'"$VUE_APP_LASTFM_API_SHARED_SECRET"',g' {} \;

find '/usr/share/nginx/html' -name '*.js' -exec sed -i -e 's,netease_dsp,'"$DEV_SERVER_PORT"',g' {} \;

nginx -g "daemon off;"

构建镜像和容器运行的基本命令如下👇

# 下载代码,当前对应的是 0.4.1
git clone https://github.com/qier222/YesPlayMusic.git

# 或者镜像站点
git clone https://hub.fastgit.org/qier222/YesPlayMusic.git

# 进入目录
cd YesPlayMusic

# 将 Dockerfile 和 replace_api_url.sh 放进代码目录中

# 构建镜像
docker build -t wbsu2003/yesplaymusic:v1 .

# 生成容器
docker run -d \
--name=yesplaymusic \
-p 3310:80 \
-e VUE_APP_NETEASE_API_URL=http://192.168.0.114:3000 \ # 网易云 API 地址
wbsu2003/yesplaymusic:v1

# --------调试-------------
# 将生成的静态文件拷贝到容器外
docker cp yesplaymusic:/usr/share/nginx/html/. ./dist

# 将生成的静态文件拷贝到容器内
docker cp /dist/. yesplaymusic:/usr/share/nginx/html
# ------------------------

安装

在群晖上以 Docker 方式安装。播放器依赖于 网易云音乐 Node.js API service, 所以要先部署 API

网易云音乐 API

在注册表中搜索 binaryify ,选择第一个 binaryify/netease_cloud_music_api,双击直接下载。

端口

端口不冲突就行

本地端口容器端口
33003000

运行

在浏览器中输入 http://群晖IP:3300 就能看到主界面,看到界面表示服务已经运行成功了

网易云音乐播放器

注册表中搜索 wbsu2003 ,找到 wbsu2003/yesplaymusic,版本选 latest

端口

端口不冲突就行

本地端口容器端口
331080

环境

可变
VUE_APP_NETEASE_API_URL网易云 API 地址
VUE_APP_LASTFM_API_KEYLast.fm 获取的 API Key
VUE_APP_LASTFM_API_SHARED_SECRETLast.fm 获取的 Shared Secret

目前情况下只设置 VUE_APP_NETEASE_API_URL 即可

运行

PC端

在浏览器中输入 http://群晖IP:3310 就能看到主界面

切到 发现

音乐库 需要登录

登录成功后就能看到你的音乐库了

直接点图片就可以开始播放音乐了,更多的功能等大家慢慢研究和挖掘。

移动端

应该主要是针对桌面的,所以没有为移动端优化

缩放后使用没问题,就是字体太小

所以在移动端使用的话,老苏建议还是用官方的客户端吧

遗留问题

  1. 不能修改环境变量

YesPlayMusic 镜像采用了占位符方式编译,只有第一次容器创建的时候会发生变量替换,所以如果你中途修改了环境变量,比如先用了内网地址,之后又想用域名,只能删除了重建,暂时没有想到好的办法,也许把前一次的环境变量作为变量再替换一次?容老苏再想想

  1. 前面的部署方式只适合局域网

如果想要在公网运行,这种方式还不行

老苏先将 网易云 API 反代到了 https://api.laosu.ml,然后将 YesPlayMusic 反代到了 https://mplayer.laosu.ml

然后就遇到了这样的问题👇

Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint '<URL>'. This request has been blocked; the content must be served over HTTPS.

更具体一点👇就是在代码运行过程中,https://api.laosu.ml 会被解析到局域网地址 http://192.168.0.197:3300,导致了 https 协议和 http 协议混用

Content: The page at 'https://mplayer.laosu.ml/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://192.168.0.197:3300/personal_fm?timestamp=1633960861058&cookie=MUSIC_U%3Dnull%3B&realIP=211.161.244.70'. This request has been blocked; the content must be served over HTTPS.

群晖的反代不支持直接将 网易云 API 反代成 https://mplayer.laosu.ml/api ,折腾了一下群晖的 nginx 设置文件,但是没搞定

老苏现在在公网使用的办法是:

  1. 网易云 API 反代到了 https://api.laosu.ml
  2. 公网直接用 tailscaleIP 访问 YesPlayMusic,相当于还是局域网访问,规避了可能造成的问题
  3. 局域网还可以继续使用 http://192.168.0.197:3310 访问 YesPlayMusic

如果你还没用过 tailscale 可以去看看: 『 外网访问群晖的新方案Tailscale

遗留问题老苏会继续研究,争取下一版能解决,不说了,老苏去听歌🎧了,周末愉快~

参考文档

qier222/YesPlayMusic: 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux
地址:https://github.com/qier222/YesPlayMusic

Binaryify/NeteaseCloudMusicApi: 网易云音乐 Node.js API service
地址:https://github.com/Binaryify/NeteaseCloudMusicApi

网易云音乐 NodeJS 版 API
地址:https://binaryify.github.io/NeteaseCloudMusicApi/#/?id=%e5%ae%89%e8%a3%85

前端如何调用后端接口_前后端分离,如何在前端项目中动态插入后端API基地址?…_weixin_39876282的博客-CSDN博客
地址:https://blog.csdn.net/weixin_39876282/article/details/111289163

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
抱歉,我无法提供具体的代码,因为需要更多的上下文信息和具体的需求。但是,我可以提供一些一般性的指导和建议,帮助您开始使用XPath爬取Q方网信息。 1. 首先,您需要确定要爬取的具体信息和页面。打开Q方网并查看源代码,找到包含您想要的信息的 HTML 元素。您可以使用浏览器的开发者工具来帮助您定位元素。 2. 确定您要使用的编程语言和爬虫框架。常见的选择包括Python和Scrapy框架。如果您不熟悉这些工具,可以考虑先学习一些基础知识。 3. 了解XPath语法。XPath是一种用于在XML和HTML文档中选择元素的语言。它使用元素的位置和属性来定位元素。了解XPath语法将有助于您编写有效的爬虫规则。您可以在网上找到各种XPath教程和参考。 4. 使用XPath选择器获取信息。在您的代码中,您可以使用XPath选择器来选择您需要的元素。例如,如果您想要获取Q方网上的标题,您可以使用以下XPath表达式: `//h1[@class='title']` 这将选择所有class属性为“title”的h1元素。 5. 解析HTML文档。在您的代码中,您需要使用HTML解析器来将HTML文档转换为树形结构,使您可以使用XPath表达式来选择元素。常见的HTML解析器包括BeautifulSoup和lxml库。 6. 提取信息并保存。一旦您选择了正确的元素,您可以从它们中提取文本,并将其保存在适当的格式中(例如CSV文件或数据库)。在您的代码中,您可以使用Python的文件处理库或数据库库来实现这一点。 以上是一些一般性的建议,希望能帮助您开始使用XPath爬取Q方网信息。如果您需要更具体的帮助,请提供更多的信息和上下文。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值