# 🎵 网易云音乐 MCP 控制器
一个基于网易云音乐MCP智能控制器,提供全局快捷键、搜索单曲播放、搜索歌单播放、自定义歌单管理、每日推荐和私人漫游等丰富功能。
## ✨ 主要特性
### 🎮 基础控制功能
- **启动网易云音乐**:支持 URL scheme 快速启动,可选自动最小化窗口
- **播放控制**:播放/暂停、上一首/下一首、音量调节
- **界面控制**:切换迷你模式、显示/隐藏歌词
- **互动功能**:一键喜欢当前歌曲
### 🎼 音乐搜索与播放
- **歌曲搜索播放**:直接搜索歌曲名或"歌曲名+歌手"组合播放
- **歌单搜索播放**:搜索并播放指定歌单
- **系统预设歌单**:快速播放飙升榜、新歌榜、热歌榜等官方榜单
- **私人雷达播放**:播放个性化推荐歌单
### 📋 歌单管理
- **自定义歌单管理**:添加、删除、列出用户自定义歌单
- **歌单配置文件**:支持通过 JSON 文件批量管理歌单
- **系统歌单集成**:内置官方热门榜单快速访问
### 🌟 高级功能
- **每日推荐播放**:自动播放网易云音乐每日推荐歌单
- **私人漫游**:启动网易云音乐私人漫游功能
- **全局快捷键**:支持全局快捷键控制,无需切换到音乐应用,支持按键自定义
### ⌨️ 全局快捷键支持
#### Windows 默认快捷键
- `Ctrl+Alt+P`:播放/暂停
- `Ctrl+Alt+Left`:上一首
- `Ctrl+Alt+Right`:下一首
- `Ctrl+Alt+Up/Down`:音量加/减
- `Ctrl+Alt+M`:切换迷你模式
- `Ctrl+Alt+L`:喜欢当前歌曲
- `Ctrl+Alt+D`:显示/隐藏歌词
#### macOS 默认快捷键
- `Cmd+Alt+P`:播放/暂停
- `Cmd+Alt+Left`:上一首
- `Cmd+Alt+Right`:下一首
- `Cmd+Alt+Up/Down`:音量加/减
- `Cmd+Alt+M`:切换迷你模式
- `Cmd+Alt+L`:喜欢当前歌曲
- `Cmd+Alt+D`:显示/隐藏歌词
> 💡 可以在 `src/config/hotkeys.json` 的 `custom_hotkeys` 部分自定义快捷键
## 🔧 环境要求
### 通用要求
- **Python**:3.10+
- **网易云音乐客户端**:需安装并可正常运行
- **uv**:现代 Python 包管理器 ([安装指南](https://docs.astral.sh/uv/getting-started/installation/))
### 平台要求
- **Windows 10/11**:完整功能支持
- Chrome浏览器:用于每日推荐和漫游功能的页面操作
- 内置 ChromeDriver (Windows x64)
- **macOS 10.15+**:基础功能支持
- 支持全局快捷键和音乐播放控制
- 高级功能(每日推荐/漫游)需要手动安装 ChromeDriver
## 📦 安装指南
### 1. 安装 uv(如果尚未安装)
```bash
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```
### 2. 克隆项目并安装依赖
```bash
git clone https://github.com/xiduan/CloudMusic_Auto_Player.git
cd CloudMusic_Auto_Player
uv sync
```
### 3. macOS 额外配置(可选,仅高级功能需要)
如需使用每日推荐和私人漫游功能,需要安装 ChromeDriver:
```bash
# 使用 Homebrew 安装
brew install chromedriver
# 或手动下载安装
# 下载地址:https://chromedriver.chromium.org/
```
### 主要依赖
- `fastmcp>=2.0.0`:MCP 服务器框架
- `pyautogui>=0.9.54`:跨平台全局快捷键支持
- `pywin32>=306`:Windows 系统集成(仅 Windows)
- `psutil>=5.9.0`:进程管理
- `selenium>=4.0.0`:Web 自动化(每日推荐/漫游功能)
- `requests>=2.28.0`:HTTP 请求库
## ⚙️ 配置说明
### 1. MCP 客户端配置
在你的 MCP 客户端配置文件中添加以下配置:
#### 使用 uv 运行(推荐)
```json
{
"mcpServers": {
"auto-music-player": {
"command": "uv",
"args": [
"run",
"--project",
"/path/to/CloudMusic_Auto_Player",
"src/server.py"
],
"cwd": "/path/to/CloudMusic_Auto_Player"
}
}
}
```
#### 平台特定路径示例
**Windows 示例:**
```json
{
"mcpServers": {
"auto-music-player": {
"command": "uv",
"args": [
"run",
"--project",
"C:\\Users\\YourName\\CloudMusic_Auto_Player",
"src/server.py"
],
"cwd": "C:\\Users\\YourName\\CloudMusic_Auto_Player"
}
}
}
```
**macOS 示例:**
```json
{
"mcpServers": {
"auto-music-player": {
"command": "uv",
"args": [
"run",
"python",
"/Users/YourName/CloudMusic_Auto_Player/src/server.py"
],
"cwd": "/Users/YourName/CloudMusic_Auto_Player"
}
}
}
```
> ⚠️ **重要提示**:某些 MCP 客户端(如 Chatbox.ai)可能不会正确处理 `cwd` 中的相对路径,建议在 `args` 中使用绝对路径。
#### 不同 MCP 客户端的配置差异
**对于 Chatbox.ai 等客户端(推荐使用绝对路径):**
```json
{
"mcpServers": {
"auto-music-player": {
"command": "/Users/YourName/CloudMusic_Auto_Player/.venv/bin/python",
"args": [
"/Users/YourName/CloudMusic_Auto_Player/src/server.py"
],
"cwd": "/Users/YourName/CloudMusic_Auto_Player"
}
}
}
```
#### 传统方式(备选方案)
```json
{
"mcpServers": {
"auto-music-player": {
"command": "python",
"args": [
"/path/to/CloudMusic_Auto_Player/src/server.py"
],
"env": {
"PYTHONPATH": "/path/to/python"
}
}
}
}
```
### 2. 网易云音乐路径配置
**重要:使用每日推荐和私人漫游功能前,必须先配置网易云音乐客户端路径。**
#### 方式一:通过 MCP 工具配置(推荐)
**Windows:**
```python
# 通过 MCP 客户端调用
set_netease_music_path(netease_path="C:\\Program Files (x86)\\Netease\\CloudMusic\\cloudmusic.exe")
```
**macOS:**
```python
# 通过 MCP 客户端调用
set_netease_music_path(netease_path="/Applications/NeteaseMusic.app/Contents/MacOS/NeteaseMusic")
```
#### 方式二:手动编辑配置文件
编辑项目根目录下的 `netease_config.json` 文件:
**Windows 配置示例:**
```json
{
"netease_music_path": "C:\\Program Files (x86)\\Netease\\CloudMusic\\cloudmusic.exe",
"debug_port": 9222,
"chromedriver_path": "src/chromedriver/win64/chromedriver.exe"
}
```
**macOS 配置示例:**
```json
{
"netease_music_path": "/Applications/NeteaseMusic.app/Contents/MacOS/NeteaseMusic",
"debug_port": 9222,
"chromedriver_path": "/opt/homebrew/bin/chromedriver"
}
```
#### 常见网易云音乐安装路径
**Windows:**
- `C:\Program Files (x86)\Netease\CloudMusic\cloudmusic.exe`
- `C:\Program Files\Netease\CloudMusic\cloudmusic.exe`
- `C:\Users\{用户名}\AppData\Local\NetEase\CloudMusic\cloudmusic.exe`
**macOS:**
- `/Applications/NeteaseMusic.app/Contents/MacOS/NeteaseMusic` (官方应用商店版本)
- `/Applications/网易云音乐.app/Contents/MacOS/网易云音乐` (官网下载版本)
### 3. 自定义歌单配置
#### 上传自定义歌单
可调用mcp上传自定义歌单,只需要输入歌单名称和歌单id即可(如有对歌单描述可添加)
编辑项目根目录下的 `playlists.json` 文件:
```json
{
"systemPlaylists": {
"飙升榜": {"id": "19723756", "name": "音乐飙升榜", "description": "网易云音乐官方飙升榜"},
"新歌榜": {"id": "3779629", "name": "音乐新歌榜", "description": "网易云音乐官方新歌榜"},
"热歌榜": {"id": "3778678", "name": "音乐热歌榜", "description": "网易云音乐官方热歌榜"}
},
"userPlaylists": {
"我的收藏": {"id": "123456789", "name": "我的收藏歌单", "description": "个人收藏"},
"工作音乐": {"id": "987654321", "name": "工作专用歌单", "description": "适合工作时听的音乐"}
}
}
```
**获取歌单 ID 的方法:**
1. 在网易云音乐网页版或客户端中打开歌单
2. 从 URL 中获取歌单 ID(例如:`https://music.163.com/#/playlist?id=123456789` 中的 `123456789`)
3. 将歌单信息添加到 `userPlaylists` 部分
## 🚀 使用方法
### 基础播放控制
```python
# 启动网易云音乐
launch_netease_music(minimize_window=True)
# 播放控制
control_playback(action="play_pause") # 播放/暂停
control_playback(action="next") # 下一首
control_playback(action="previous") # 上一首
# 音量控制
control_volume(action="volume_up") # 音量加
control_volume(action="volume_down") # 音量减
# 界面控制
toggle_mini_mode() # 切换迷你模式
toggle_lyrics() # 切换歌词显示
like_current_song() # 喜欢当前歌曲
```
### 音乐搜索与播放
```python
# 搜索并播放歌曲
search_and_play(query="稻香 周杰伦", minimize_window=True)
# 播放预设歌单
search_and_play_playlist(playlist_name="飙升榜", minimize_window=True)
# 播放自定义歌单
search_and_play_playlist(playlist_name="我的收藏", minimize_window=True)
```
### 高级功能
```python
# 播放每日推荐(需要先配置网易云音乐路径)
play_daily_recommend()
# 启动私人漫游(需要先配置网易云音乐路径)
play_roaming()
# 获取控制器信息和功能列表
get_controller_info()
# 获取当前配置
get_netease_config()
```
### 歌单管理
```python
# 列出所有歌单
manage_custom_playlists(action="list")
# 添加新歌单
manage_custom_playlists(
action="add",
playlist_name="新歌单",
playlist_id="123456789",
description="歌单描述"
)
# 删除歌单
manage_custom_playlists(action="remove", playlist_name="旧歌单")
```
## ⚠️ 注意事项
### 重要提醒
1. **网易云音乐路径配置**:使用每日推荐和私人漫游功能前,必须先通过 `set_netease_music_path()` 配置网易云音乐客户端路径
2. **ChromeDriver要求**:每日推荐和漫游功能需要 ChromeDriver,项目已包含 Windows 版本
3. **VIP功能限制**:私人漫游功能可能需要网易云音乐 VIP 会员
4. **网络连接**:搜索和播放功能需要稳定的网络连接
### 故障排除
- **快捷键不响应**:确保已安装 `pyautogui` 且没有其他程序占用快捷键
- **网易云音乐启动失败**:检查 URL scheme 是否正确注册,尝试重新安装网易云音乐
- **每日推荐无法播放**:确认网易云音乐路径配置正确,检查是否已登录账户
- **搜索功能异常**:检查网络连接,确认网易云音乐 API 可正常访问
### 兼容性说明
#### 支持的操作系统
- **Windows 10/11**:完整功能支持
- 全局快捷键控制 ✅
- 音乐搜索播放 ✅
- 每日推荐功能 ✅
- 私人漫游功能 ✅
- 内置 ChromeDriver ✅
- **macOS 10.15+**:基础功能支持
- 全局快捷键控制 ✅
- 音乐搜索播放 ✅
- 每日推荐功能 ⚠️ (需手动安装 ChromeDriver)
- 私人漫游功能 ⚠️ (需手动安装 ChromeDriver)
#### 客户端要求
- 需要网易云音乐桌面客户端(不支持 UWP 版本)
- 建议使用最新版本的网易云音乐客户端以获得最佳兼容性
- macOS 用户推荐从官方网站下载桌面版本
## 📁 项目结构
```
auto_music/
├── src/
│ ├── server.py # MCP 服务器主程序
│ └── chromedriver/ # ChromeDriver 文件
│ └── win64/
├── config.json # MCP 客户端配置示例
├── netease_config.json # 网易云音乐配置文件
├── playlists.json # 歌单配置文件
├── requirements.txt # Python 依赖
└── README.md # 项目文档
```
## 🤝 技术支持
- **项目仓库**:[GitHub仓库地址]
- **问题反馈**:请在 GitHub Issues 中提交
- **联系邮箱**:lxd4094@foxmail.com
## 📄 许可证
本项目采用 MIT 许可证开源。
## 🔄 更新日志
### v1.0.0
- ✅ 基础播放控制功能
- ✅ 全局快捷键支持
- ✅ 网易云音乐客户端自动启动
- ✅ 音乐搜索与播放
- ✅ 歌单管理功能
- ✅ 每日推荐播放
- ✅ 私人漫游功能
- ✅ 完整的 MCP 工具集成
---
**享受音乐,让控制更简单!** 🎵
Raw data
{
"_id": null,
"home_page": null,
"name": "cloudmusic-auto-player",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "automation, controller, mcp, music, netease",
"author": null,
"author_email": "xiduan <lxd4094@foxmail.com>",
"download_url": "https://files.pythonhosted.org/packages/ef/6e/ece285c34ca5ca7c0dcb3a4a46be622a28d8fad92c1ba22c65d8197f9cbd/cloudmusic_auto_player-1.0.0.tar.gz",
"platform": null,
"description": "# \ud83c\udfb5 \u7f51\u6613\u4e91\u97f3\u4e50 MCP \u63a7\u5236\u5668\n\n\u4e00\u4e2a\u57fa\u4e8e\u7f51\u6613\u4e91\u97f3\u4e50MCP\u667a\u80fd\u63a7\u5236\u5668\uff0c\u63d0\u4f9b\u5168\u5c40\u5feb\u6377\u952e\u3001\u641c\u7d22\u5355\u66f2\u64ad\u653e\u3001\u641c\u7d22\u6b4c\u5355\u64ad\u653e\u3001\u81ea\u5b9a\u4e49\u6b4c\u5355\u7ba1\u7406\u3001\u6bcf\u65e5\u63a8\u8350\u548c\u79c1\u4eba\u6f2b\u6e38\u7b49\u4e30\u5bcc\u529f\u80fd\u3002\n\n## \u2728 \u4e3b\u8981\u7279\u6027\n\n### \ud83c\udfae \u57fa\u7840\u63a7\u5236\u529f\u80fd\n- **\u542f\u52a8\u7f51\u6613\u4e91\u97f3\u4e50**\uff1a\u652f\u6301 URL scheme \u5feb\u901f\u542f\u52a8\uff0c\u53ef\u9009\u81ea\u52a8\u6700\u5c0f\u5316\u7a97\u53e3\n- **\u64ad\u653e\u63a7\u5236**\uff1a\u64ad\u653e/\u6682\u505c\u3001\u4e0a\u4e00\u9996/\u4e0b\u4e00\u9996\u3001\u97f3\u91cf\u8c03\u8282\n- **\u754c\u9762\u63a7\u5236**\uff1a\u5207\u6362\u8ff7\u4f60\u6a21\u5f0f\u3001\u663e\u793a/\u9690\u85cf\u6b4c\u8bcd\n- **\u4e92\u52a8\u529f\u80fd**\uff1a\u4e00\u952e\u559c\u6b22\u5f53\u524d\u6b4c\u66f2\n\n### \ud83c\udfbc \u97f3\u4e50\u641c\u7d22\u4e0e\u64ad\u653e\n- **\u6b4c\u66f2\u641c\u7d22\u64ad\u653e**\uff1a\u76f4\u63a5\u641c\u7d22\u6b4c\u66f2\u540d\u6216\"\u6b4c\u66f2\u540d+\u6b4c\u624b\"\u7ec4\u5408\u64ad\u653e\n- **\u6b4c\u5355\u641c\u7d22\u64ad\u653e**\uff1a\u641c\u7d22\u5e76\u64ad\u653e\u6307\u5b9a\u6b4c\u5355\n- **\u7cfb\u7edf\u9884\u8bbe\u6b4c\u5355**\uff1a\u5feb\u901f\u64ad\u653e\u98d9\u5347\u699c\u3001\u65b0\u6b4c\u699c\u3001\u70ed\u6b4c\u699c\u7b49\u5b98\u65b9\u699c\u5355\n- **\u79c1\u4eba\u96f7\u8fbe\u64ad\u653e**\uff1a\u64ad\u653e\u4e2a\u6027\u5316\u63a8\u8350\u6b4c\u5355\n\n### \ud83d\udccb \u6b4c\u5355\u7ba1\u7406\n- **\u81ea\u5b9a\u4e49\u6b4c\u5355\u7ba1\u7406**\uff1a\u6dfb\u52a0\u3001\u5220\u9664\u3001\u5217\u51fa\u7528\u6237\u81ea\u5b9a\u4e49\u6b4c\u5355\n- **\u6b4c\u5355\u914d\u7f6e\u6587\u4ef6**\uff1a\u652f\u6301\u901a\u8fc7 JSON \u6587\u4ef6\u6279\u91cf\u7ba1\u7406\u6b4c\u5355\n- **\u7cfb\u7edf\u6b4c\u5355\u96c6\u6210**\uff1a\u5185\u7f6e\u5b98\u65b9\u70ed\u95e8\u699c\u5355\u5feb\u901f\u8bbf\u95ee\n\n### \ud83c\udf1f \u9ad8\u7ea7\u529f\u80fd\n- **\u6bcf\u65e5\u63a8\u8350\u64ad\u653e**\uff1a\u81ea\u52a8\u64ad\u653e\u7f51\u6613\u4e91\u97f3\u4e50\u6bcf\u65e5\u63a8\u8350\u6b4c\u5355\n- **\u79c1\u4eba\u6f2b\u6e38**\uff1a\u542f\u52a8\u7f51\u6613\u4e91\u97f3\u4e50\u79c1\u4eba\u6f2b\u6e38\u529f\u80fd\n- **\u5168\u5c40\u5feb\u6377\u952e**\uff1a\u652f\u6301\u5168\u5c40\u5feb\u6377\u952e\u63a7\u5236\uff0c\u65e0\u9700\u5207\u6362\u5230\u97f3\u4e50\u5e94\u7528\uff0c\u652f\u6301\u6309\u952e\u81ea\u5b9a\u4e49\n\n### \u2328\ufe0f \u5168\u5c40\u5feb\u6377\u952e\u652f\u6301\n\n#### Windows \u9ed8\u8ba4\u5feb\u6377\u952e\n- `Ctrl+Alt+P`\uff1a\u64ad\u653e/\u6682\u505c\n- `Ctrl+Alt+Left`\uff1a\u4e0a\u4e00\u9996\n- `Ctrl+Alt+Right`\uff1a\u4e0b\u4e00\u9996 \n- `Ctrl+Alt+Up/Down`\uff1a\u97f3\u91cf\u52a0/\u51cf\n- `Ctrl+Alt+M`\uff1a\u5207\u6362\u8ff7\u4f60\u6a21\u5f0f\n- `Ctrl+Alt+L`\uff1a\u559c\u6b22\u5f53\u524d\u6b4c\u66f2\n- `Ctrl+Alt+D`\uff1a\u663e\u793a/\u9690\u85cf\u6b4c\u8bcd\n\n#### macOS \u9ed8\u8ba4\u5feb\u6377\u952e\n- `Cmd+Alt+P`\uff1a\u64ad\u653e/\u6682\u505c\n- `Cmd+Alt+Left`\uff1a\u4e0a\u4e00\u9996\n- `Cmd+Alt+Right`\uff1a\u4e0b\u4e00\u9996 \n- `Cmd+Alt+Up/Down`\uff1a\u97f3\u91cf\u52a0/\u51cf\n- `Cmd+Alt+M`\uff1a\u5207\u6362\u8ff7\u4f60\u6a21\u5f0f\n- `Cmd+Alt+L`\uff1a\u559c\u6b22\u5f53\u524d\u6b4c\u66f2\n- `Cmd+Alt+D`\uff1a\u663e\u793a/\u9690\u85cf\u6b4c\u8bcd\n\n> \ud83d\udca1 \u53ef\u4ee5\u5728 `src/config/hotkeys.json` \u7684 `custom_hotkeys` \u90e8\u5206\u81ea\u5b9a\u4e49\u5feb\u6377\u952e\n\n## \ud83d\udd27 \u73af\u5883\u8981\u6c42\n\n### \u901a\u7528\u8981\u6c42\n- **Python**\uff1a3.10+\n- **\u7f51\u6613\u4e91\u97f3\u4e50\u5ba2\u6237\u7aef**\uff1a\u9700\u5b89\u88c5\u5e76\u53ef\u6b63\u5e38\u8fd0\u884c\n- **uv**\uff1a\u73b0\u4ee3 Python \u5305\u7ba1\u7406\u5668 ([\u5b89\u88c5\u6307\u5357](https://docs.astral.sh/uv/getting-started/installation/))\n\n### \u5e73\u53f0\u8981\u6c42\n- **Windows 10/11**\uff1a\u5b8c\u6574\u529f\u80fd\u652f\u6301\n - Chrome\u6d4f\u89c8\u5668\uff1a\u7528\u4e8e\u6bcf\u65e5\u63a8\u8350\u548c\u6f2b\u6e38\u529f\u80fd\u7684\u9875\u9762\u64cd\u4f5c\n - \u5185\u7f6e ChromeDriver (Windows x64)\n- **macOS 10.15+**\uff1a\u57fa\u7840\u529f\u80fd\u652f\u6301\n - \u652f\u6301\u5168\u5c40\u5feb\u6377\u952e\u548c\u97f3\u4e50\u64ad\u653e\u63a7\u5236\n - \u9ad8\u7ea7\u529f\u80fd\uff08\u6bcf\u65e5\u63a8\u8350/\u6f2b\u6e38\uff09\u9700\u8981\u624b\u52a8\u5b89\u88c5 ChromeDriver\n\n## \ud83d\udce6 \u5b89\u88c5\u6307\u5357\n\n### 1. \u5b89\u88c5 uv\uff08\u5982\u679c\u5c1a\u672a\u5b89\u88c5\uff09\n```bash\n# macOS/Linux\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Windows\npowershell -ExecutionPolicy ByPass -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n```\n\n### 2. \u514b\u9686\u9879\u76ee\u5e76\u5b89\u88c5\u4f9d\u8d56\n```bash\ngit clone https://github.com/xiduan/CloudMusic_Auto_Player.git\ncd CloudMusic_Auto_Player\nuv sync\n```\n\n### 3. macOS \u989d\u5916\u914d\u7f6e\uff08\u53ef\u9009\uff0c\u4ec5\u9ad8\u7ea7\u529f\u80fd\u9700\u8981\uff09\n\u5982\u9700\u4f7f\u7528\u6bcf\u65e5\u63a8\u8350\u548c\u79c1\u4eba\u6f2b\u6e38\u529f\u80fd\uff0c\u9700\u8981\u5b89\u88c5 ChromeDriver\uff1a\n```bash\n# \u4f7f\u7528 Homebrew \u5b89\u88c5\nbrew install chromedriver\n\n# \u6216\u624b\u52a8\u4e0b\u8f7d\u5b89\u88c5\n# \u4e0b\u8f7d\u5730\u5740\uff1ahttps://chromedriver.chromium.org/\n```\n\n### \u4e3b\u8981\u4f9d\u8d56\n- `fastmcp>=2.0.0`\uff1aMCP \u670d\u52a1\u5668\u6846\u67b6\n- `pyautogui>=0.9.54`\uff1a\u8de8\u5e73\u53f0\u5168\u5c40\u5feb\u6377\u952e\u652f\u6301\n- `pywin32>=306`\uff1aWindows \u7cfb\u7edf\u96c6\u6210\uff08\u4ec5 Windows\uff09\n- `psutil>=5.9.0`\uff1a\u8fdb\u7a0b\u7ba1\u7406\n- `selenium>=4.0.0`\uff1aWeb \u81ea\u52a8\u5316\uff08\u6bcf\u65e5\u63a8\u8350/\u6f2b\u6e38\u529f\u80fd\uff09\n- `requests>=2.28.0`\uff1aHTTP \u8bf7\u6c42\u5e93\n\n## \u2699\ufe0f \u914d\u7f6e\u8bf4\u660e\n\n### 1. MCP \u5ba2\u6237\u7aef\u914d\u7f6e\n\n\u5728\u4f60\u7684 MCP \u5ba2\u6237\u7aef\u914d\u7f6e\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\uff1a\n\n#### \u4f7f\u7528 uv \u8fd0\u884c\uff08\u63a8\u8350\uff09\n```json\n{\n \"mcpServers\": {\n \"auto-music-player\": {\n \"command\": \"uv\",\n \"args\": [\n \"run\",\n \"--project\",\n \"/path/to/CloudMusic_Auto_Player\",\n \"src/server.py\"\n ],\n \"cwd\": \"/path/to/CloudMusic_Auto_Player\"\n }\n }\n}\n```\n\n#### \u5e73\u53f0\u7279\u5b9a\u8def\u5f84\u793a\u4f8b\n\n**Windows \u793a\u4f8b\uff1a**\n```json\n{\n \"mcpServers\": {\n \"auto-music-player\": {\n \"command\": \"uv\",\n \"args\": [\n \"run\",\n \"--project\", \n \"C:\\\\Users\\\\YourName\\\\CloudMusic_Auto_Player\",\n \"src/server.py\"\n ],\n \"cwd\": \"C:\\\\Users\\\\YourName\\\\CloudMusic_Auto_Player\"\n }\n }\n}\n```\n\n**macOS \u793a\u4f8b\uff1a**\n```json\n{\n \"mcpServers\": {\n \"auto-music-player\": {\n \"command\": \"uv\",\n \"args\": [\n \"run\",\n \"python\",\n \"/Users/YourName/CloudMusic_Auto_Player/src/server.py\"\n ],\n \"cwd\": \"/Users/YourName/CloudMusic_Auto_Player\"\n }\n }\n}\n```\n\n> \u26a0\ufe0f **\u91cd\u8981\u63d0\u793a**\uff1a\u67d0\u4e9b MCP \u5ba2\u6237\u7aef\uff08\u5982 Chatbox.ai\uff09\u53ef\u80fd\u4e0d\u4f1a\u6b63\u786e\u5904\u7406 `cwd` \u4e2d\u7684\u76f8\u5bf9\u8def\u5f84\uff0c\u5efa\u8bae\u5728 `args` \u4e2d\u4f7f\u7528\u7edd\u5bf9\u8def\u5f84\u3002\n\n#### \u4e0d\u540c MCP \u5ba2\u6237\u7aef\u7684\u914d\u7f6e\u5dee\u5f02\n\n**\u5bf9\u4e8e Chatbox.ai \u7b49\u5ba2\u6237\u7aef\uff08\u63a8\u8350\u4f7f\u7528\u7edd\u5bf9\u8def\u5f84\uff09\uff1a**\n```json\n{\n \"mcpServers\": {\n \"auto-music-player\": {\n \"command\": \"/Users/YourName/CloudMusic_Auto_Player/.venv/bin/python\",\n \"args\": [\n \"/Users/YourName/CloudMusic_Auto_Player/src/server.py\"\n ],\n \"cwd\": \"/Users/YourName/CloudMusic_Auto_Player\"\n }\n }\n}\n```\n\n#### \u4f20\u7edf\u65b9\u5f0f\uff08\u5907\u9009\u65b9\u6848\uff09\n```json\n{\n \"mcpServers\": {\n \"auto-music-player\": {\n \"command\": \"python\",\n \"args\": [\n \"/path/to/CloudMusic_Auto_Player/src/server.py\"\n ],\n \"env\": {\n \"PYTHONPATH\": \"/path/to/python\"\n }\n }\n }\n}\n```\n\n### 2. \u7f51\u6613\u4e91\u97f3\u4e50\u8def\u5f84\u914d\u7f6e\n\n**\u91cd\u8981\uff1a\u4f7f\u7528\u6bcf\u65e5\u63a8\u8350\u548c\u79c1\u4eba\u6f2b\u6e38\u529f\u80fd\u524d\uff0c\u5fc5\u987b\u5148\u914d\u7f6e\u7f51\u6613\u4e91\u97f3\u4e50\u5ba2\u6237\u7aef\u8def\u5f84\u3002**\n\n#### \u65b9\u5f0f\u4e00\uff1a\u901a\u8fc7 MCP \u5de5\u5177\u914d\u7f6e\uff08\u63a8\u8350\uff09\n\n**Windows\uff1a**\n```python\n# \u901a\u8fc7 MCP \u5ba2\u6237\u7aef\u8c03\u7528\nset_netease_music_path(netease_path=\"C:\\\\Program Files (x86)\\\\Netease\\\\CloudMusic\\\\cloudmusic.exe\")\n```\n\n**macOS\uff1a**\n```python\n# \u901a\u8fc7 MCP \u5ba2\u6237\u7aef\u8c03\u7528\nset_netease_music_path(netease_path=\"/Applications/NeteaseMusic.app/Contents/MacOS/NeteaseMusic\")\n```\n\n#### \u65b9\u5f0f\u4e8c\uff1a\u624b\u52a8\u7f16\u8f91\u914d\u7f6e\u6587\u4ef6\n\u7f16\u8f91\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u7684 `netease_config.json` \u6587\u4ef6\uff1a\n\n**Windows \u914d\u7f6e\u793a\u4f8b\uff1a**\n```json\n{\n \"netease_music_path\": \"C:\\\\Program Files (x86)\\\\Netease\\\\CloudMusic\\\\cloudmusic.exe\",\n \"debug_port\": 9222,\n \"chromedriver_path\": \"src/chromedriver/win64/chromedriver.exe\"\n}\n```\n\n**macOS \u914d\u7f6e\u793a\u4f8b\uff1a**\n```json\n{\n \"netease_music_path\": \"/Applications/NeteaseMusic.app/Contents/MacOS/NeteaseMusic\",\n \"debug_port\": 9222,\n \"chromedriver_path\": \"/opt/homebrew/bin/chromedriver\"\n}\n```\n\n#### \u5e38\u89c1\u7f51\u6613\u4e91\u97f3\u4e50\u5b89\u88c5\u8def\u5f84\n\n**Windows\uff1a**\n- `C:\\Program Files (x86)\\Netease\\CloudMusic\\cloudmusic.exe`\n- `C:\\Program Files\\Netease\\CloudMusic\\cloudmusic.exe`\n- `C:\\Users\\{\u7528\u6237\u540d}\\AppData\\Local\\NetEase\\CloudMusic\\cloudmusic.exe`\n\n**macOS\uff1a**\n- `/Applications/NeteaseMusic.app/Contents/MacOS/NeteaseMusic` (\u5b98\u65b9\u5e94\u7528\u5546\u5e97\u7248\u672c)\n- `/Applications/\u7f51\u6613\u4e91\u97f3\u4e50.app/Contents/MacOS/\u7f51\u6613\u4e91\u97f3\u4e50` (\u5b98\u7f51\u4e0b\u8f7d\u7248\u672c)\n\n### 3. \u81ea\u5b9a\u4e49\u6b4c\u5355\u914d\u7f6e\n\n#### \u4e0a\u4f20\u81ea\u5b9a\u4e49\u6b4c\u5355\n\u53ef\u8c03\u7528mcp\u4e0a\u4f20\u81ea\u5b9a\u4e49\u6b4c\u5355\uff0c\u53ea\u9700\u8981\u8f93\u5165\u6b4c\u5355\u540d\u79f0\u548c\u6b4c\u5355id\u5373\u53ef\uff08\u5982\u6709\u5bf9\u6b4c\u5355\u63cf\u8ff0\u53ef\u6dfb\u52a0\uff09\n\u7f16\u8f91\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u7684 `playlists.json` \u6587\u4ef6\uff1a\n\n```json\n{\n \"systemPlaylists\": {\n \"\u98d9\u5347\u699c\": {\"id\": \"19723756\", \"name\": \"\u97f3\u4e50\u98d9\u5347\u699c\", \"description\": \"\u7f51\u6613\u4e91\u97f3\u4e50\u5b98\u65b9\u98d9\u5347\u699c\"},\n \"\u65b0\u6b4c\u699c\": {\"id\": \"3779629\", \"name\": \"\u97f3\u4e50\u65b0\u6b4c\u699c\", \"description\": \"\u7f51\u6613\u4e91\u97f3\u4e50\u5b98\u65b9\u65b0\u6b4c\u699c\"},\n \"\u70ed\u6b4c\u699c\": {\"id\": \"3778678\", \"name\": \"\u97f3\u4e50\u70ed\u6b4c\u699c\", \"description\": \"\u7f51\u6613\u4e91\u97f3\u4e50\u5b98\u65b9\u70ed\u6b4c\u699c\"}\n },\n \"userPlaylists\": {\n \"\u6211\u7684\u6536\u85cf\": {\"id\": \"123456789\", \"name\": \"\u6211\u7684\u6536\u85cf\u6b4c\u5355\", \"description\": \"\u4e2a\u4eba\u6536\u85cf\"},\n \"\u5de5\u4f5c\u97f3\u4e50\": {\"id\": \"987654321\", \"name\": \"\u5de5\u4f5c\u4e13\u7528\u6b4c\u5355\", \"description\": \"\u9002\u5408\u5de5\u4f5c\u65f6\u542c\u7684\u97f3\u4e50\"}\n }\n}\n```\n\n**\u83b7\u53d6\u6b4c\u5355 ID \u7684\u65b9\u6cd5\uff1a**\n1. \u5728\u7f51\u6613\u4e91\u97f3\u4e50\u7f51\u9875\u7248\u6216\u5ba2\u6237\u7aef\u4e2d\u6253\u5f00\u6b4c\u5355\n2. \u4ece URL \u4e2d\u83b7\u53d6\u6b4c\u5355 ID\uff08\u4f8b\u5982\uff1a`https://music.163.com/#/playlist?id=123456789` \u4e2d\u7684 `123456789`\uff09\n3. \u5c06\u6b4c\u5355\u4fe1\u606f\u6dfb\u52a0\u5230 `userPlaylists` \u90e8\u5206\n\n## \ud83d\ude80 \u4f7f\u7528\u65b9\u6cd5\n\n### \u57fa\u7840\u64ad\u653e\u63a7\u5236\n\n```python\n# \u542f\u52a8\u7f51\u6613\u4e91\u97f3\u4e50\nlaunch_netease_music(minimize_window=True)\n\n# \u64ad\u653e\u63a7\u5236\ncontrol_playback(action=\"play_pause\") # \u64ad\u653e/\u6682\u505c\ncontrol_playback(action=\"next\") # \u4e0b\u4e00\u9996\ncontrol_playback(action=\"previous\") # \u4e0a\u4e00\u9996\n\n# \u97f3\u91cf\u63a7\u5236\ncontrol_volume(action=\"volume_up\") # \u97f3\u91cf\u52a0\ncontrol_volume(action=\"volume_down\") # \u97f3\u91cf\u51cf\n\n# \u754c\u9762\u63a7\u5236\ntoggle_mini_mode() # \u5207\u6362\u8ff7\u4f60\u6a21\u5f0f\ntoggle_lyrics() # \u5207\u6362\u6b4c\u8bcd\u663e\u793a\nlike_current_song() # \u559c\u6b22\u5f53\u524d\u6b4c\u66f2\n```\n\n### \u97f3\u4e50\u641c\u7d22\u4e0e\u64ad\u653e\n\n```python\n# \u641c\u7d22\u5e76\u64ad\u653e\u6b4c\u66f2\nsearch_and_play(query=\"\u7a3b\u9999 \u5468\u6770\u4f26\", minimize_window=True)\n\n# \u64ad\u653e\u9884\u8bbe\u6b4c\u5355\nsearch_and_play_playlist(playlist_name=\"\u98d9\u5347\u699c\", minimize_window=True)\n\n# \u64ad\u653e\u81ea\u5b9a\u4e49\u6b4c\u5355\nsearch_and_play_playlist(playlist_name=\"\u6211\u7684\u6536\u85cf\", minimize_window=True)\n```\n\n### \u9ad8\u7ea7\u529f\u80fd\n\n```python\n# \u64ad\u653e\u6bcf\u65e5\u63a8\u8350\uff08\u9700\u8981\u5148\u914d\u7f6e\u7f51\u6613\u4e91\u97f3\u4e50\u8def\u5f84\uff09\nplay_daily_recommend()\n\n# \u542f\u52a8\u79c1\u4eba\u6f2b\u6e38\uff08\u9700\u8981\u5148\u914d\u7f6e\u7f51\u6613\u4e91\u97f3\u4e50\u8def\u5f84\uff09\nplay_roaming()\n\n# \u83b7\u53d6\u63a7\u5236\u5668\u4fe1\u606f\u548c\u529f\u80fd\u5217\u8868\nget_controller_info()\n\n# \u83b7\u53d6\u5f53\u524d\u914d\u7f6e\nget_netease_config()\n```\n\n### \u6b4c\u5355\u7ba1\u7406\n\n```python\n# \u5217\u51fa\u6240\u6709\u6b4c\u5355\nmanage_custom_playlists(action=\"list\")\n\n# \u6dfb\u52a0\u65b0\u6b4c\u5355\nmanage_custom_playlists(\n action=\"add\", \n playlist_name=\"\u65b0\u6b4c\u5355\", \n playlist_id=\"123456789\", \n description=\"\u6b4c\u5355\u63cf\u8ff0\"\n)\n\n# \u5220\u9664\u6b4c\u5355\nmanage_custom_playlists(action=\"remove\", playlist_name=\"\u65e7\u6b4c\u5355\")\n```\n\n## \u26a0\ufe0f \u6ce8\u610f\u4e8b\u9879\n\n### \u91cd\u8981\u63d0\u9192\n1. **\u7f51\u6613\u4e91\u97f3\u4e50\u8def\u5f84\u914d\u7f6e**\uff1a\u4f7f\u7528\u6bcf\u65e5\u63a8\u8350\u548c\u79c1\u4eba\u6f2b\u6e38\u529f\u80fd\u524d\uff0c\u5fc5\u987b\u5148\u901a\u8fc7 `set_netease_music_path()` \u914d\u7f6e\u7f51\u6613\u4e91\u97f3\u4e50\u5ba2\u6237\u7aef\u8def\u5f84\n2. **ChromeDriver\u8981\u6c42**\uff1a\u6bcf\u65e5\u63a8\u8350\u548c\u6f2b\u6e38\u529f\u80fd\u9700\u8981 ChromeDriver\uff0c\u9879\u76ee\u5df2\u5305\u542b Windows \u7248\u672c\n3. **VIP\u529f\u80fd\u9650\u5236**\uff1a\u79c1\u4eba\u6f2b\u6e38\u529f\u80fd\u53ef\u80fd\u9700\u8981\u7f51\u6613\u4e91\u97f3\u4e50 VIP \u4f1a\u5458\n4. **\u7f51\u7edc\u8fde\u63a5**\uff1a\u641c\u7d22\u548c\u64ad\u653e\u529f\u80fd\u9700\u8981\u7a33\u5b9a\u7684\u7f51\u7edc\u8fde\u63a5\n\n### \u6545\u969c\u6392\u9664\n- **\u5feb\u6377\u952e\u4e0d\u54cd\u5e94**\uff1a\u786e\u4fdd\u5df2\u5b89\u88c5 `pyautogui` \u4e14\u6ca1\u6709\u5176\u4ed6\u7a0b\u5e8f\u5360\u7528\u5feb\u6377\u952e\n- **\u7f51\u6613\u4e91\u97f3\u4e50\u542f\u52a8\u5931\u8d25**\uff1a\u68c0\u67e5 URL scheme \u662f\u5426\u6b63\u786e\u6ce8\u518c\uff0c\u5c1d\u8bd5\u91cd\u65b0\u5b89\u88c5\u7f51\u6613\u4e91\u97f3\u4e50\n- **\u6bcf\u65e5\u63a8\u8350\u65e0\u6cd5\u64ad\u653e**\uff1a\u786e\u8ba4\u7f51\u6613\u4e91\u97f3\u4e50\u8def\u5f84\u914d\u7f6e\u6b63\u786e\uff0c\u68c0\u67e5\u662f\u5426\u5df2\u767b\u5f55\u8d26\u6237\n- **\u641c\u7d22\u529f\u80fd\u5f02\u5e38**\uff1a\u68c0\u67e5\u7f51\u7edc\u8fde\u63a5\uff0c\u786e\u8ba4\u7f51\u6613\u4e91\u97f3\u4e50 API \u53ef\u6b63\u5e38\u8bbf\u95ee\n\n### \u517c\u5bb9\u6027\u8bf4\u660e\n\n#### \u652f\u6301\u7684\u64cd\u4f5c\u7cfb\u7edf\n- **Windows 10/11**\uff1a\u5b8c\u6574\u529f\u80fd\u652f\u6301\n - \u5168\u5c40\u5feb\u6377\u952e\u63a7\u5236 \u2705\n - \u97f3\u4e50\u641c\u7d22\u64ad\u653e \u2705\n - \u6bcf\u65e5\u63a8\u8350\u529f\u80fd \u2705\n - \u79c1\u4eba\u6f2b\u6e38\u529f\u80fd \u2705\n - \u5185\u7f6e ChromeDriver \u2705\n\n- **macOS 10.15+**\uff1a\u57fa\u7840\u529f\u80fd\u652f\u6301\n - \u5168\u5c40\u5feb\u6377\u952e\u63a7\u5236 \u2705\n - \u97f3\u4e50\u641c\u7d22\u64ad\u653e \u2705\n - \u6bcf\u65e5\u63a8\u8350\u529f\u80fd \u26a0\ufe0f (\u9700\u624b\u52a8\u5b89\u88c5 ChromeDriver)\n - \u79c1\u4eba\u6f2b\u6e38\u529f\u80fd \u26a0\ufe0f (\u9700\u624b\u52a8\u5b89\u88c5 ChromeDriver)\n\n#### \u5ba2\u6237\u7aef\u8981\u6c42\n- \u9700\u8981\u7f51\u6613\u4e91\u97f3\u4e50\u684c\u9762\u5ba2\u6237\u7aef\uff08\u4e0d\u652f\u6301 UWP \u7248\u672c\uff09\n- \u5efa\u8bae\u4f7f\u7528\u6700\u65b0\u7248\u672c\u7684\u7f51\u6613\u4e91\u97f3\u4e50\u5ba2\u6237\u7aef\u4ee5\u83b7\u5f97\u6700\u4f73\u517c\u5bb9\u6027\n- macOS \u7528\u6237\u63a8\u8350\u4ece\u5b98\u65b9\u7f51\u7ad9\u4e0b\u8f7d\u684c\u9762\u7248\u672c\n\n## \ud83d\udcc1 \u9879\u76ee\u7ed3\u6784\n\n```\nauto_music/\n\u251c\u2500\u2500 src/\n\u2502 \u251c\u2500\u2500 server.py # MCP \u670d\u52a1\u5668\u4e3b\u7a0b\u5e8f\n\u2502 \u2514\u2500\u2500 chromedriver/ # ChromeDriver \u6587\u4ef6\n\u2502 \u2514\u2500\u2500 win64/\n\u251c\u2500\u2500 config.json # MCP \u5ba2\u6237\u7aef\u914d\u7f6e\u793a\u4f8b\n\u251c\u2500\u2500 netease_config.json # \u7f51\u6613\u4e91\u97f3\u4e50\u914d\u7f6e\u6587\u4ef6\n\u251c\u2500\u2500 playlists.json # \u6b4c\u5355\u914d\u7f6e\u6587\u4ef6\n\u251c\u2500\u2500 requirements.txt # Python \u4f9d\u8d56\n\u2514\u2500\u2500 README.md # \u9879\u76ee\u6587\u6863\n```\n\n## \ud83e\udd1d \u6280\u672f\u652f\u6301\n\n- **\u9879\u76ee\u4ed3\u5e93**\uff1a[GitHub\u4ed3\u5e93\u5730\u5740]\n- **\u95ee\u9898\u53cd\u9988**\uff1a\u8bf7\u5728 GitHub Issues \u4e2d\u63d0\u4ea4\n- **\u8054\u7cfb\u90ae\u7bb1**\uff1alxd4094@foxmail.com\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528 MIT \u8bb8\u53ef\u8bc1\u5f00\u6e90\u3002\n\n## \ud83d\udd04 \u66f4\u65b0\u65e5\u5fd7\n\n### v1.0.0\n- \u2705 \u57fa\u7840\u64ad\u653e\u63a7\u5236\u529f\u80fd\n- \u2705 \u5168\u5c40\u5feb\u6377\u952e\u652f\u6301\n- \u2705 \u7f51\u6613\u4e91\u97f3\u4e50\u5ba2\u6237\u7aef\u81ea\u52a8\u542f\u52a8\n- \u2705 \u97f3\u4e50\u641c\u7d22\u4e0e\u64ad\u653e\n- \u2705 \u6b4c\u5355\u7ba1\u7406\u529f\u80fd\n- \u2705 \u6bcf\u65e5\u63a8\u8350\u64ad\u653e\n- \u2705 \u79c1\u4eba\u6f2b\u6e38\u529f\u80fd\n- \u2705 \u5b8c\u6574\u7684 MCP \u5de5\u5177\u96c6\u6210\n\n---\n\n**\u4eab\u53d7\u97f3\u4e50\uff0c\u8ba9\u63a7\u5236\u66f4\u7b80\u5355\uff01** \ud83c\udfb5\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "\u7f51\u6613\u4e91\u97f3\u4e50 MCP \u63a7\u5236\u5668 - \u63d0\u4f9b\u5168\u5c40\u5feb\u6377\u952e\u3001\u641c\u7d22\u5355\u66f2\u64ad\u653e\u3001\u641c\u7d22\u6b4c\u5355\u64ad\u653e\u3001\u81ea\u5b9a\u4e49\u6b4c\u5355\u7ba1\u7406\u3001\u6bcf\u65e5\u63a8\u8350\u548c\u79c1\u4eba\u6f2b\u6e38\u7b49\u4e30\u5bcc\u529f\u80fd",
"version": "1.0.0",
"project_urls": {
"Homepage": "https://github.com/xiduan/CloudMusic_Auto_Player",
"Issues": "https://github.com/xiduan/CloudMusic_Auto_Player/issues",
"Repository": "https://github.com/xiduan/CloudMusic_Auto_Player"
},
"split_keywords": [
"automation",
" controller",
" mcp",
" music",
" netease"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "8d14acd8b2d337f500175c557894bccb0913c6962cbab588d2964f97d7ce663f",
"md5": "f8b3eb82579f2d9444d625e54179d1d6",
"sha256": "0b00e002bf62ee713822f704f915a0dddc3fb103a508974aa6119cdd3bb635e1"
},
"downloads": -1,
"filename": "cloudmusic_auto_player-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f8b3eb82579f2d9444d625e54179d1d6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 5906184,
"upload_time": "2025-07-29T07:24:34",
"upload_time_iso_8601": "2025-07-29T07:24:34.601779Z",
"url": "https://files.pythonhosted.org/packages/8d/14/acd8b2d337f500175c557894bccb0913c6962cbab588d2964f97d7ce663f/cloudmusic_auto_player-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ef6eece285c34ca5ca7c0dcb3a4a46be622a28d8fad92c1ba22c65d8197f9cbd",
"md5": "05c85ce05a1b7700536d30e51a388ffb",
"sha256": "a415644dee665ae9ffb4c263ae87e45508aaa89e84e8275f7e689a0a51abf838"
},
"downloads": -1,
"filename": "cloudmusic_auto_player-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "05c85ce05a1b7700536d30e51a388ffb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 5979744,
"upload_time": "2025-07-29T07:24:39",
"upload_time_iso_8601": "2025-07-29T07:24:39.982753Z",
"url": "https://files.pythonhosted.org/packages/ef/6e/ece285c34ca5ca7c0dcb3a4a46be622a28d8fad92c1ba22c65d8197f9cbd/cloudmusic_auto_player-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-29 07:24:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "xiduan",
"github_project": "CloudMusic_Auto_Player",
"github_not_found": true,
"lcname": "cloudmusic-auto-player"
}