buldiei/ipodsync
GitHub: buldiei/ipodsync
ipodsync 是一个纯 Python 命令行工具,让用户无需 iTunes 即可在 macOS 和 Linux 上为 iPod nano 6G/7G 上传音乐、管理播放列表并自动生成封面。
Stars: 0 | Forks: 0
# ipodsync
无需 iTunes/Apple Music 即可将音乐上传到 **iPod nano 6G/7G** —— 直接在 macOS 和 Linux 的终端中操作。iPod 会作为普通卷挂载;`ipodsync` 会编辑其 SQLite 媒体库,对其进行签名 (hashAB) 并**自动生成封面**。
## 功能
- `list` / `export` —— 检查并从设备下载音轨(包含标签)。
- `add` —— 上传 MP3,从标签读取元数据,**自动附带封面**(来自内嵌的 APIC/covr):在“正在播放”和列表/Albums 视图中均会显示。
- `rm` —— 删除音轨(+文件),并重新签名。
- 播放列表 —— `playlists` / `pl-create` / `pl-add` / `pl-rm` / `pl-del`。
- `cover` —— 为已上传的音轨附加封面。
- 也可在**空(已擦除)的媒体库**上运行 —— 无需 iTunes 进行初始化。
## 安装
```
pipx install ipodsync # recommended (isolated), or: pip install ipodsync
```
需要 Python ≥ 3.9。纯 Python 实现 —— 无需编译器或原生库。
## 用法
```
ipodsync status # ready / no access / not connected
ipodsync list
ipodsync add "Song.mp3" # + cover auto
ipodsync add "Song.mp3" --no-cover
ipodsync export ~/Music/ipod --by-album
ipodsync cover 123456789 --image cover.jpg
ipodsync rm 123456789 --delete-file
```
在 macOS 中,iPod 会在 `/Volumes` 下被发现;在 Linux 中,则会在 `/media`、`/run/media`、`/mnt` 下通过检测 `iPod_Control/` 来发现。若要显式指定路径,请设置 `IPODSYNC_MOUNT=/path/to/mount`。
## 工作原理
- **传输** —— 大容量存储:文件被写入 `iPod_Control/` 下。
- **数据库** —— SQLite `iTunes Library.itlp/*.itdb`(而非 `iTunesCDB`,后者由设备自动重新生成)。只有 `Locations.itdb` 受 hash 保护 (`.cbk`)。
- **hashAB** —— 防篡改 `.cbk` 签名(白盒 AES)。[dstaley/hashab](https://github.com/dstaley/hashab)(公有领域)的**纯 Python** 移植版,100/100 测试向量通过。无需编译器或原生库 —— 该包可在任何地方安装。
- **封面** —— 用于 `ArtworkDB` + `F_1.ithmb` 的纯 Python 写入器(RGB565 LE,格式 1010/1013/1015/1016),采用增量追加方式。
## 状态 / 路线图
| | 状态 |
|---|---|
| 上传 / 删除 / 导出 / 播放列表 (MP3) | ✅ 已在 nano 7G 上验证 |
| 封面(纯 Python) | ✅ 已在 nano 7G 上验证 |
| 空媒体库引导 | ✅ |
| **纯 Python hashAB**(无原生库,全平台安装) | ✅ 100/100 向量 |
| 跨平台设备发现(macOS + Linux) | ✅ |
| FLAC/AAC → ALAC | ⬜ |
## 开发
```
git clone … && cd ipodsync
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest
```
## 许可证
MIT(详见 [LICENSE](LICENSE))。内置的 hashAB 算法属于公有领域。
与 Apple 无任何关联;iPod 和 iTunes 是 Apple 的商标。
标签:Blue Team, iPod, Python, SQLite, 哈希签名, 无后门, 逆向工具, 音乐同步