feat: 声匣 —— 网易云 / QQ 音乐自托管下载服务

由 163-music-dl CLI 重构为 Web 服务:
- 下载流水线、歌词与标签逻辑沿用旧版(node-id3 / ffmpeg)
- 网易云(chksz 接口 + music.163.com 元数据)与 QQ 音乐(VIP Cookie)provider
- QQ 扫码登录与 musickey 自动续期
- SQLite 持久化的下载队列,SSE 实时进度
- 曲库工具(M3U / ZIP / 回收站 / 补全标签)、历史统计与导出、访问密码
- Vite 8 + Vue 3 前端,浅色 / 深色
- Docker 部署配置(飞牛 NAS)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jocay
2026-10-10 22:05:30 +08:00
commit 21945cc54f
73 changed files with 12507 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
# 部署:git clone 到 /vol1/1000/dockercompose/shengxia 后执行
# docker compose up -d --build
# 路径与端口可在同目录 .env 中覆盖(见 .env.example)
services:
shengxia:
build:
context: .
args:
NPM_REGISTRY: ${NPM_REGISTRY:-https://registry.npmmirror.com}
ALPINE_MIRROR: ${ALPINE_MIRROR:-mirrors.aliyun.com}
image: shengxia:latest
container_name: shengxia
restart: unless-stopped
ports:
- "${PORT:-8066}:8066"
environment:
PUID: ${PUID:-1000}
PGID: ${PGID:-1001}
TZ: Asia/Shanghai
# 首次启动时导入旧版 CLI 的下载历史(只导入一次)
LEGACY_HISTORY_FILE: /legacy/download_history.json
volumes:
- ${MUSIC_DIR:-/vol2/1000/Music}:/music
- ./data:/data
- ${LEGACY_HISTORY_DIR:-/vol1/1000/Apps/163-music-dl}:/legacy:ro