这是一个将 YesPlayMusic 播放器状态与 amll (applemusic-like-lyrics) 服务进行同步的Python工具。
如果需要来自网易云的逐字歌词,可能需要临时本地部署https://github.com/neteasecloudmusicapienhanced/api-enhanced ,启动后将config.py中的YESPLAY_YRC_LYRIC_API路径改为临时部署路径(同一台机器不用改,默认3000)
需要将config.py的数据改成你的实际数据,主要需要修改AMLL_WS_URI,其他都是yesplaymusic和api的默认本地地址
旨在为Linux和安卓(容器)的用户提供本地的网易云在线歌曲播放支持。同时Win也可用。[对于WIN的用户,AMLL UI控制失效]
NOTICE:安卓容器的用户可能需要使用本仓库release中的YesPlayMusic Fix版本,否则可能遇到运行Yesplaymusic提示非法指令错误。
经测试,部分环境fix版本仍然可能报错,可尝试本地编译。(请自备git,nodejs16,yarn环境,不会的话问GPT)[可以先试试仓库fix版本可不可用,暂时无法反馈]
1.git clone https://github.com/qier222/YesPlayMusic
2.yarn add electron@27.3.2
3.cp .env.example .env
4.yarn electron:build --linux dir
5.在dist_electron 中找到yesplaymusic
6.运行 yesplaymusic --no-sandbox
7.正常运行
它会实时获取 YesPlayMusic 的播放状态,包括当前曲目、播放进度、音量和播放/暂停状态,并通过 WebSocket 将这些信息发送给 amll 服务。这使得 amll 能够以精美的 Apple Music 风格展示实时歌词。
- 实时同步: 实时将 YesPlayMusic 的播放状态同步到
amll。 - 丰富的状态信息: 同步包括曲目信息(歌名、歌手、专辑、封面)、播放进度、播放/暂停状态以及音量变化。
- 断线重连: 能够自动检测与
amllWebSocket 服务的连接中断,并进行自动重连。 - 状态平滑: 通过平滑处理播放进度,提供更流畅的状态更新。
- 配置简单: 主要配置项集中在
config.py文件中,方便修改和使用。
在运行此脚本之前,请确保你已准备好:
- Python 3.7+
- 一个正在运行的 YesPlayMusic 实例,并确保其API可以访问(YesPlayMusic默认开启,与python在同一容器就无需更改)。
- 一个正在运行的 amll 服务实例。
你可以通过 pip 安装所需的依赖库:
pip install websockets aiohttp loguru requests打开 config.py 文件,根据你的实际环境修改以下配置:
YESPLAY_PLAYER_API: 你的 YesPlayMusic 播放器 API 地址。- 示例:
"http://localhost:7878/player"(这个是YesPlayMusic默认地址)
- 示例:
AMLL_WS_URI: 你的amll服务的 WebSocket 地址。- 示例:
"ws://localhost:11444"(先把amll里的ws地址绑定改成0.0.0.0:11444,然后把这一项改成ws://0.0.0.0:11444)[因为绝大部分容器和手机的网络是连通,当然假如用虚拟机或者特殊配置过,那需要填写手机的IP)]
- 示例:
完成配置后,直接运行主程序即可:
python main.py程序启动后,它将自动连接到 amll 服务并开始同步 YesPlayMusic 的播放状态。
.
├── main.py # 主程序入口,负责连接和主循环
├── config.py # 配置文件,用于设置API和WebSocket地址
├── state.py # 全局状态管理,保存播放器状态
├── event_handlers.py # 事件处理器,处理来自amll的消息和播放器数据更新
├── player_tools.py # 播放器相关的辅助工具
├── utils.py # 通用辅助函数
├── ws_protocol.py # 定义了与amll通信的WebSocket消息协议
└── README.md # 本文档
本项目采用 GNU General Public License v3.0 许可证。详情请参阅 LICENSE 文件。