Files
Mymusic3/Netease-sync/README.md
史悦 50f7869a05 feat: 实现网易云音乐同步服务核心功能与UI改进
添加完整的网易云音乐同步到Navidrome的功能实现,包括:
1. 新增Docker支持与相关配置文件
2. 实现歌单同步逻辑与Navidrome API集成
3. 改进前端UI界面与交互体验
4. 添加状态监控与错误处理机制
5. 实现定时同步功能与进度显示
2026-01-12 20:03:30 +08:00

150 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Netease Sync to Navidrome
将网易云音乐歌单同步到 Navidrome 的服务。
## 功能特性
- 支持通过歌单ID或分享链接添加网易云音乐歌单
- 自动下载歌单中的歌曲(通过 sync-server
- 在 Navidrome 中创建同名歌单
- 自动匹配并添加已下载的歌曲到 Navidrome 歌单
- 定时自动同步默认每300秒
- 增量同步,只添加新歌曲
- 实时同步状态反馈
- Web 界面管理
## 环境变量
在启动服务前,需要配置以下环境变量:
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| `PORT` | 服务端口 | 3000 |
| `DATA_DIR` | 数据存储目录 | /app/data |
| `NAVIDROME_URL` | Navidrome 服务地址 | http://navidrome:4533 |
| `NAVIDROME_USERNAME` | Navidrome 用户名 | admin |
| `NAVIDROME_PASSWORD` | Navidrome 密码 | - |
| `SYNC_INTERVAL` | 定时同步间隔(秒) | 300 |
| `SYNC_SERVER_URL` | Sync-Server 服务地址 | http://sync-service:3001 |
| `SYNC_SERVER_TOKEN` | Sync-Server 认证令牌 | default |
| `TUNEHUB_API_URL` | TuneHub API 地址 | https://music-dl.sayqz.com |
## 使用方法
### 1. 配置环境变量
复制 `.env.example``.env` 并修改配置:
```bash
cp .env.example .env
```
编辑 `.env` 文件,设置 Navidrome 的连接信息。
### 2. 使用 Docker Compose 启动
在项目根目录运行:
```bash
docker-compose up -d netease-sync
```
### 3. 访问 Web 界面
打开浏览器访问:`http://localhost:7483`
### 4. 添加歌单
在输入框中输入网易云音乐歌单ID或分享链接例如
- 歌单ID`123456789`
- 分享链接:`https://music.163.com/#/playlist?id=123456789`
点击"添加歌单"按钮,系统会自动:
1. 获取歌单信息
2. 下载所有歌曲
3. 在 Navidrome 中创建歌单
4. 添加歌曲到歌单
### 5. 管理歌单
- **立即同步**:点击"立即同步"按钮手动触发同步
- **删除歌单**:点击"删除"按钮移除歌单(不会删除 Navidrome 中的歌单)
- **查看状态**:实时查看同步状态和上次同步时间
## API 接口
### 获取所有歌单
```
GET /api/playlists
```
### 添加歌单
```
POST /api/playlists
Content-Type: application/json
{
"url": "歌单ID或分享链接"
}
```
### 删除歌单
```
DELETE /api/playlists/:id
```
### 手动同步歌单
```
POST /api/playlists/:id/sync
```
### 获取歌单状态
```
GET /api/status/:id
```
## 同步逻辑
1. **获取歌单信息**:通过 TuneHub API 获取网易云音乐歌单信息
2. **下载歌曲**:将歌曲列表发送到 sync-server 进行下载
3. **等待下载完成**:等待 5 秒让 sync-server 处理下载
4. **匹配歌曲**:根据文件名格式 `Artist - Name [netease_id].ext` 在 Navidrome 中搜索歌曲
5. **更新歌单**
- 如果是首次同步,在 Navidrome 中创建新歌单
- 如果已存在,只添加新匹配到的歌曲
6. **记录映射**保存网易云音乐歌曲ID到 Navidrome歌曲ID的映射关系
## 数据存储
所有数据存储在 `DATA_DIR` 目录下的 `playlists.json` 文件中,包括:
- 歌单信息
- Navidrome 歌单ID
- 歌曲映射关系
- 同步状态和时间
## 故障排除
### 歌单同步失败
1. 检查 Navidrome 连接配置是否正确
2. 查看 Docker 容器日志:`docker logs netease-sync`
3. 确认 sync-server 正常运行
4. 检查网络连接
### 歌曲未匹配到
1. 确认歌曲已成功下载到 music 目录
2. 检查文件名格式是否正确
3. Navidrome 可能需要时间扫描新文件
4. 尝试手动触发 Navidrome 媒体库扫描
### 定时同步不工作
1. 检查 `SYNC_INTERVAL` 环境变量设置
2. 查看容器日志确认定时任务是否启动
3. 确认服务正常运行