微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Python和libgpodgtkpod将音乐从Linux加载到iPod

下面的代码,我认为这是一个最小的程序来加载音乐

db = Database('/media/[email protected] 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消息)。 path都是正确的,我可以打开目录,写入文件等。数据库对象看起来是正确的(例如,显示2个播放列表),并且存在SysInfoExtended文件

ALPC Windows NT API的?

我究竟做错了什么? 有没有人得到这个(libgpod Python包装)工作?

一个可能的线索是gtkpod提示我inputiPodtypes(Classic 160GB)。 上面我没有设置这些信息。 我该如何设置? 更新 – 我尝试了上面显示调用,并在下面的答案中提到,但似乎没有效果(我没有包括它原来是因为我认为它一定是错的,但也许是必要的,问题是在别处)。 另外,gtkpod称之为“xB150”?

我已经问过libgpod / gtkpod邮件列表,但没有收到任何回应。 这是最新的稳定版本和git主干(用CFLAGS = -w编译)。

更新删除了所有的音乐,然后用C297和xB150运行上面的代码。 在任何情况下,Extras.itdb文件(看起来像一个sqlite数据库)更改大小和断开的iPod没有歌曲。 相关的文件在以下链接

SysInfo (空文件

SysInfoExtended

Extras.itdb (sqlite db?)

关于这个问题的一般说明,将在这里进行更新。

一个可能的线索是gtkpod提示我输入iPod类型(Classic 160GB)。 上面我没有设置这些信息。 我该如何设置?

itdb_device_set_sysinfo (db._itdb.device,"FOOBAR");

根据型号列表将FOOBAR替换为您的型号 。

编辑:

我的建议是用调试符号编译gtkpod ,并用gdb跟踪它的运行情况。 libgtkpod/file.c:add_track_by_filename()断点libgtkpod/file.c:add_track_by_filename()似乎是一个不错的起点。

比较它与你的libgpod用法,看看是否有任何额外的电话。 显然,Python的绑定抽象的东西更多,但它不应该是一个问题,找出他们最终调用

(例如, import_file调用itdb_cp_track_to_ipod和itdb_playlist_add_track )

对不起,这是我无法访问设备的所有帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐