一个用Rust编写的Dizzylab音乐自动同步工具,可以自动下载你购买的所有专辑。
- 🎵 自动同步所有已购买的专辑
- 🎛️ 支持多种音质格式(128kbps/320kbps MP3/FLAC/特典)
- ⚡ 单线程下载,避免给服务器造成压力
- 🔧 基于TOML的简单配置
- 🖥️ 命令行界面(未来将支持GUI)
- 确保安装了Rust (1.70+)
- 克隆仓库并编译:
git clone https://github.com/Ovler-Young/dizzysync.git
cd dizzysync
cargo build --release编译完成后,可执行文件位于 target/release/dizzysync
./dizzysync --init这会创建一个默认的 config.toml 配置文件。
编辑 config.toml 文件,设置你的Dizzylab cookie:
- 在浏览器中登录 Dizzylab
- 打开开发者工具 (F12)
- 在网络选项卡中找到任意请求
- 复制Cookie头的值
- 将cookie值粘贴到配置文件中
Cookie格式示例:
sessionid=your_session_id_here; csrftoken=your_csrf_token_here
# 干运行 - 仅列出专辑,不下载
./dizzysync --dry-run
# 开始同步
./dizzysync
# 仅下载元数据(专辑信息、封面、README、NFO),不下载音频文件
./dizzysync --metadata-only
# 仅下载指定ID的专辑
./dizzysync --id dts
# 组合使用:仅下载指定专辑的元数据
./dizzysync --id dts --metadata-only
# 使用自定义配置文件
./dizzysync -c /path/to/config.toml
# 更多命令行选项示例
./dizzysync --skip-existing # 跳过已存在的目录(默认true)
./dizzysync --skip-existing false # 不跳过已存在的目录
./dizzysync --single-threaded # 启用单线程模式(默认true)
./dizzysync --single-threaded false # 禁用单线程模式
./dizzysync --generate-readme false --generate-nfo false # 不生成README和NFO文件
./dizzysync -o ./MyMusic # 指定输出目录
./dizzysync --output-dir /path/to/music # 指定输出目录(完整格式)注意: 大部分配置选项都可以通过命令行参数覆盖。
在 config.toml 中配置要下载的格式:
[download]
formats = ["320", "FLAC"] # 可选: "128", "320", "FLAC", "gift""128"- 128kbps MP3 (较小文件)"320"- 320kbps MP3 (高质量)"FLAC"- 无损FLAC (最高质量)"gift"- 特典内容
[paths]
# 自定义目录结构,支持变量替换
directory_template = "{album}/@{label}" # 默认: 专辑名/@厂牌名
# directory_template = "{year}/{label}/{album}" # 按年份分类
# directory_template = "{label}/{album}" # 按厂牌分类支持的变量:
{album}- 专辑名{label}- 厂牌名{authors}- 作者名{year}- 当前年份{date}- 当前日期 (YYYY-MM-DD)
音频文件(128/320/FLAC)直接放在专辑目录下,特典内容放在 gift/ 子目录中:
DizzySync/
└─ Example Album/
└─ @Example Label/
├─ 01 Track One.mp3
├─ 02 Track Two.mp3
├─ 01 Track One.flac
├─ 02 Track Two.flac
├─ gift/
│ └─ bonus.zip(解压内容)
├─ cover.jpg
├─ README.md
└─ album.nfo
可以通过配置文件或命令行参数启用元数据模式:
[behavior]
metadata_only = true # 仅下载元数据,不下载音频文件或使用命令行参数:
./dizzysync --metadata-only元数据模式会下载:
- 专辑信息和详细描述
- 专辑封面(如果可用)
- README.md 文件(包含专辑详细信息)
- NFO 文件(媒体库兼容格式)
但不会下载任何音频文件。这对以下场景很有用:
- 快速建立音乐库索引
- 节省存储空间
- 仅获取专辑信息进行浏览
可以使用--id参数下载指定ID的单个专辑:
./dizzysync --id SWQX-01这对以下场景很有用:
- 只想下载特定的专辑
- 测试下载功能
- 重新下载某个专辑
- 与其他参数组合使用(如
--metadata-only)
专辑ID通常可以从Dizzylab的专辑页面URL中获取,格式如:https://www.dizzylab.net/d/SWQX-01/
以下命令行参数可以覆盖配置文件设置:
注意: 对于布尔值参数,可以省略值(默认为true)或明确指定true/false。例如:
--skip-existing等同于--skip-existing true--skip-existing false明确设为false
--metadata-only- 仅下载元数据,不下载音频文件--skip-existing [true/false]- 跳过已存在的目录(省略值时默认为true)--single-threaded [true/false]- 单线程模式(省略值时默认为true)
--generate-readme [true/false]- 生成README.md文件(省略值时默认为true)--generate-nfo [true/false]- 生成NFO文件(省略值时默认为true)
-o DIR,--output-dir DIR- 指定输出目录
--id ALBUM_ID- 仅下载指定ID的专辑--dry-run- 仅列出专辑,不下载--debug- 启用调试模式-c FILE,--config FILE- 指定配置文件路径
- 配置文件解析
- HTTP客户端和cookie管理
- 用户信息获取
- 专辑列表获取
- 文件下载功能
- 文件组织逻辑
- 命令行界面
- 元数据模式
- 指定专辑ID下载
- 命令行参数覆盖配置
- Tauri框架集成
- Web前端界面
- 下载进度显示
- 配置管理界面
- 断点续传
- 增量同步
- 多用户支持
- 自动更新
-
"无法从页面中提取用户ID"
- 检查cookie是否正确
- 确保cookie没有过期
-
"无法从页面中提取下载密钥"
- 某些专辑可能不支持特定格式
- 尝试其他格式或检查专辑页面
-
下载失败
- 网络连接问题
- 服务器临时不可用
- Cookie过期
如果遇到问题,请:
- 检查日志输出
- 尝试使用
--dry-run模式 - 提交issue并附上错误信息
此工具仅用于下载用户已合法购买的内容。请遵守Dizzylab的服务条款和版权法律。
MIT License