Files
Mymusic3/Netease-sync
史悦 ad972dd2a5 - Netease-sync/server.js
- 新增 formatSongLog
      - 解析失败日志包含 id/source/apiUrl
      - 下载失败日志包含 id/source/directUrl
2026-01-13 11:19:47 +08:00
..
2026-01-13 11:19:47 +08:00

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 并修改配置:

cp .env.example .env

编辑 .env 文件,设置 Navidrome 的连接信息。

2. 使用 Docker Compose 启动

在项目根目录运行:

docker-compose up -d netease-sync

3. 访问 Web 界面

打开浏览器访问:http://localhost:7483

4. 添加歌单

在输入框中输入网易云音乐歌单ID或分享链接例如

  • 歌单ID123456789
  • 分享链接: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. 确认服务正常运行