and*_*oke 10 python linux ipod
以下代码,我认为是加载音乐的最小程序
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()
Run Code Online (Sandbox Code Playgroud)
将以下内容打印到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
Run Code Online (Sandbox Code Playgroud)
并且不加载任何音乐.
当我运行gtkpod(它使用libgpod - 它们都来自同一个项目)时,它确实有效(并且只打印初始警告和ITDB_SPLAT_UNKNOWN消息).路径都是正确的,我可以打开目录,写入文件等.数据库对象看起来是正确的(例如显示2个播放列表),并且存在SysInfoExtended文件.
我究竟做错了什么?有没有人有这个(libgpod Python包装)工作?
一个可能的线索是gtkpod提示我输入iPod类型(Classic 160GB).我没有在上面设置这些信息.我怎么设置? 更新 - 我确实尝试了上面显示的调用,并在下面的答案中提到,但它似乎没有效果(我最初没有包括它,因为我认为它一定是错的,但也许它是需要的,问题在其他地方).另外,gtkpod称之为"xB150"?!
我已经问过libgpod/gtkpod邮件列表,但没有得到回复.这是最新的稳定版本和git trunk(使用CFLAGS = -w编译).
更新我删除了所有音乐,然后用C297和xB150运行上面的代码.在任何一种情况下,文件Extras.itdb(看起来像一个sqlite数据库)都改变了大小,断开连接的iPod没有歌曲.相关文件位于以下链接:
一个可能的线索是 gtkpod 提示我输入 iPod 类型(Classic 160GB)。我没有在上面设置该信息。我该如何设置呢?
itdb_device_set_sysinfo (db._itdb.device, "ModelNumStr", "FOOBAR");
Run Code Online (Sandbox Code Playgroud)
FOOBAR根据型号列表更换您的型号。
编辑:
我的建议是gtkpod使用调试符号进行编译并使用gdb. 中的断点libgtkpod/file.c:add_track_by_filename()似乎是一个不错的起点。
将其使用情况libgpod与您的进行比较,看看是否有任何额外的调用。显然,Python 绑定对事物进行了更多抽象,但弄清楚它们最终调用的内容应该不成问题。
(例如,import_file调用itdb_cp_track_to_ipod和itdb_playlist_add_track)
抱歉,这就是我在无法访问设备的情况下所能提供的所有帮助。
| 归档时间: |
|
| 查看次数: |
1286 次 |
| 最近记录: |