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, 二进制序列化, 安全插件, 数据库写入, 音频管理