以下代码,我认为是加载音乐的最小程序
db = Database('/media/andrew@acooke.org ipod')
itdb_device_set_sysinfo(db._itdb.device, "ModelNumStr", "C297")
db.import_file('/home/andrew/some-track.mp3')
db.copy_delayed_files()
db.close()
将以下内容打印到 stderr:
** (utrunner.py:11333): WARNING **: Itdb_Track ID '0' not found.
** (utrunner.py:11333): CRITICAL **: itdb_get_mountpoint: assertion `itdb' failed
** (utrunner.py:11333): CRITICAL **: prepare_itdb_for_write: assertion `link' failed
** (utrunner.py:11333): CRITICAL **: mk_mhla: assertion `fexp->albums' failed
** (utrunner.py:11333): CRITICAL **: mk_mhli: assertion `fexp->artists' failed
** (utrunner.py:11333): CRITICAL **: itdb_splr_validate: assertion `at != ITDB_SPLAT_UNKNOWN' failed
并且不加载任何音乐。
当我运行 gtkpod(它使用 libgpod - 它们都来自同一个项目)时,它确实有效(并且只打印了初始警告和ITDB_SPLAT_UNKNOWN
消息)。路径都是正确的,我可以打开目录、写入文件等。数据库对象似乎是正确的(例如显示 2 个播放列表)并且存在 SysInfoExtended 文件。
我究竟做错了什么?有没有人让这个(libgpod Python 包装器)工作?
一个可能的线索是 gtkpod 提示我选择 iPod 类型(经典 160GB)。我没有在上面设置该信息。我该如何设置? 更新- 我确实尝试了上面显示并在下面的答案中提到的调用,但它似乎没有效果(我最初没有包括它,因为我认为它一定是错误的,但也许它是必需的,问题出在其他地方)。另外,gtkpod 称它为“xB150”?!
我询问了 libgpod/gtkpod 邮件列表,但没有收到任何回复。这是最新的稳定版本和 git 主干(使用 CFLAGS=-w 编译)。
更新我删除了所有音乐,然后用 C297 和 xB150 运行上面的代码。在这两种情况下,Extras.itdb 文件(看起来像一个 sqlite db)都没有改变大小,并且断开连接的 iPod 没有歌曲。相关文件位于以下链接:
- 系统信息(空文件)
- 系统信息扩展
- Extras.itdb(sqlite 数据库?)