# 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. 确认服务正常运行