次のコードは、音楽をロードするための最小限のプログラムだと思います
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 ラッパー) を動かした人はいますか?
考えられる手がかりの 1 つは、gtkpod が iPod タイプ (Classic 160GB) の入力を求めることです。上記の情報は設定しません。どうすれば設定できますか? 更新-上記の呼び出しを試し、以下の回答で言及しましたが、効果がないように見えました(最初は含めなかったのは、間違っているに違いないと思ったからですが、おそらく必要であり、問題は別の場所にあります) )。また、gtkpod はそれを「xB150」と呼んでいますか?!
libgpod/gtkpod メーリング リストに質問しましたが、応答がありません。これは、最新の安定版リリースと git トランク (CFLAGS=-w でコンパイル) の両方にあります。
更新すべての音楽を削除してから、C297 と xB150 の両方で上記のコードを実行しました。どちらの場合も、ファイル Extras.itdb (sqlite db のように見える) のサイズは変化せず、切断された iPod には曲がありません。関連ファイルは次のリンクにあります。
- SysInfo (空ファイル)
- SysInfoExtended
- Extras.itdb (sqlite db?)