10

次のコードは、音楽をロードするための最小限のプログラムだと思います

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 には曲がありません。関連ファイルは次のリンクにあります。

この問題に関する一般的な注意事項は、今後更新される予定です。

4

1 に答える 1

4

考えられる手がかりの 1 つは、gtkpod が iPod タイプ (Classic 160GB) の入力を求めることです。上記の情報は設定しません。どうすれば設定できますか?

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

型式一覧FOOBARに従って、お使いの型式に交換してください。

編集:

私の提案はgtkpod、デバッグ シンボルを使用してコンパイルし、その実行を .xml でトレースすることgdbです。ブレークポイントはlibgtkpod/file.c:add_track_by_filename()良い出発点のようです。

の使用法を自分のものと比較し、libgpod追加の呼び出しがあるかどうかを確認します。明らかに、Python バインディングは物事をより抽象化しますが、最終的に何を呼び出すかを理解することは問題ではありません。

(例:import_file通話itdb_cp_track_to_ipoditdb_playlist_add_track)

申し訳ありませんが、デバイスにアクセスせずにできるのはこれだけです。

于 2012-08-08T12:26:59.463 に答える