menor/podscribe
GitHub: menor/podscribe
一个用 TypeScript 重新实现的 iTunesDB 写入库,专为 5.5 代 iPod Video 编写旧版无校验和的数据库格式,填补了 libgpod 消失后该领域的工具空白。
Stars: 0 | Forks: 0
# podscribe
一个小巧、易读的 TypeScript 库,用于为
5.5 代 iPod Video (A1136) 编写**旧版 iTunesDB** —— 即**没有 hash58/校验和**的数据库。它负责管理
iPod 的音轨、播放列表和音频文件,基于已公开文档的二进制格式重新实现。
它是该项目所需的 [libgpod](https://github.com/libgpod/libgpod) 的最小功能切片,使用
TypeScript 重新构建,因为 libgpod 不再为现代 macOS 提供软件包,而且任何语言中都不存在可维护的 iTunesDB
*写入器*。
## 缘由
- **libgpod 方案已不复存在。** 它已从 Homebrew 中消失(没有 formula/tap/cask/pip);现在所有途径都
意味着要在 macOS 14 上从源码构建 2012 年的 C 语言库。
- 无论使用哪种语言,**重新实现都是不可避免的** —— 没有任何库可以*写入* iTunesDB。
- 目标 iPod 使用**没有校验和的旧版格式**,因此现代 iPod 支持中那些困难的、伪造签名的部分
在这里并不适用。它仅仅是对挂载的 FAT32 卷进行普通的纯小端序 `Buffer` 序列化 —— 不需要原生 USB,也不需要内核访问权限。
## 范围
**包含:** iTunesDB 数据块序列化;读取 MP3 标签(只读);将音频复制到
`iPod_Control/Music`;创建/获取/修改播放列表(包括主播放列表);全面擦除;
通过 `fsync` + OS 同步 + 醒目的安全弹出提示进行安全保存;带有时间戳的备份。一个最小化的数据块树
**读取器**,用于针对真实数据库验证写入器。
**不包含:** Plex、网络连接、智能同步差异对比、转码以及现代(带有哈希的)DB 格式。
## 计划中的 API
```
openIpod(mountPath): IpodDb // locate iPod_Control
backupDb(db): string // timestamped copy, returns path
addTrack(db, filePath, { comment? }): Track
getOrCreatePlaylist(db, name): Playlist
addToPlaylist(pl, track) / removeFromPlaylist / reorderPlaylist(pl, trackIds[])
wipeAll(db, { confirm: true }) // mirror: drop all tracks/playlists + audio
save(db) // serialize, write, fsync, OS sync, eject notice
```
## 格式
旧版 iTunesDB 数据块树(小端序,无校验和):
```
mhbd database header
└ mhsd type=1 tracklist set
└ mhlt track list header (count)
└ mhit ×N track item
└ mhod ×M data objects: title, artist, album, comment, filepath, …
└ mhsd type=2/3 playlist set
└ mhlp playlist list header (count)
└ mhyp ×P playlist (index 1 = master/library)
├ mhod playlist title
└ mhip ×K → mhod playlist item → references a track by id
```
音轨必须被添加到主/媒体库播放列表(`mhyp` 索引 1)中,而不仅仅是添加到指定的播放列表,否则旧版固件将无法显示它。
## 安全性
- **绝不**修改源音乐文件或其标签 —— 标签是只读的输入。
- 在任何写入操作之前,**始终**备份现有的 iTunesDB(带有时间戳,绝不覆盖)。
- 仅在正确挂载的 FAT32 iPod 上运行;`save` 会执行刷新、`fsync`、OS 同步,并打印
醒目的安全弹出通知。
- 遇错即显著报错 —— 明确指出哪个音轨失败以及原因。
## 许可证
[MIT](LICENSE) © 2026 José Menor
标签:iPod, iTunesDB, MITM代理, TypeScript, 二进制序列化, 安全插件, 数据库写入, 音频管理