# 音乐系统 **Repository Path**: yrjlw/music-system ## Basic Information - **Project Name**: 音乐系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-29 - **Last Updated**: 2026-09-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Music Import Service 分享链接 → yt-dlp 抽音频 → 刮削标签 → 写入 Navidrome 曲库。 客户端: - **Android**:`android-client/` - **Windows**:`windows-client/`(WinUI 3 桌面端) - **不**自动触发 Navidrome 扫盘(手动扫) - **MySQL 8.0**:任务持久化 + 标签去重索引 - 无 Redis - 可选通义千问纠标签 ## MySQL - **库名**:`music_import` - 账号示例:`root` / 你的密码 先执行建库脚本: ```bash mysql -uroot -p < import-service/schema.sql ``` 应用启动时也会用 SQLAlchemy `create_all` 补表(库需已存在)。 表: | 表 | 作用 | |----|------| | `import_task` | 导入任务状态与历史 | | `track_index` | 按标签 artist+title 去重;并记录 platform/source_id | ## 目录约定 音乐根目录默认:`/home/luobo/music` ```text /home/luobo/music/{歌手}/{歌手} - {歌名}.m4a /home/luobo/music/.tmp/ # 临时下载,.ndignore 忽略 ``` ## 部署 ```bash cd music-system cp import-service/.env.example import-service/.env # 确认 MYSQL_*、API_TOKEN # 本机 Python cd import-service python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt # 需 ffmpeg python -m app.main # 或 Docker(MySQL 在宿主机时,.env 里 MYSQL_HOST 填宿主机地址,如 172.17.0.1) docker compose up -d --build ``` 首次建议重建去重索引(扫描现有曲库标签写入 `track_index`): ```bash curl -X POST http://127.0.0.1:8088/api/v1/admin/rebuild-dedupe \ -H "Authorization: Bearer change-me" ``` ## API 鉴权:`Authorization: Bearer ` ```bash # 导入 curl -X POST http://127.0.0.1:8088/api/v1/imports \ -H "Authorization: Bearer change-me" \ -H "Content-Type: application/json" \ -d '{"url":"分享链接","on_duplicate":"skip"}' # 查任务(重启后仍可查) curl http://127.0.0.1:8088/api/v1/imports/{task_id} \ -H "Authorization: Bearer change-me" # 健康检查 curl http://127.0.0.1:8088/api/v1/health ``` ## 更新 yt-dlp ```bash pip install -U --pre "yt-dlp[default]" # 或 docker compose exec music-import pip install -U --pre "yt-dlp[default]" ```