2


0

iTunes COM永続IDの説明が必要です。 トラックのIDは、iPodに転送されるときに同じですか?

私はiTunes COM APIを使って、iPodデータベースからiTunesライブラリに「レーティング」と「再生回数」を更新するためのJScriptスクリプトを書いています。 そうするためには、スクリプトがこのiTunesライブラリから転送された曲を認識できるようにして、iPodのトラックの評価データを読み取り、iTunesライブラリの対応するトラックを更新できるようにする必要があります。

これが私が書いたコードです:

var iTunesApp = WScript.createObject("iTunes.Application");
var mainLibrary = iTunesApp.LibraryPlaylist;
var iPodLibraryPlaylist = playlists.Item(1);    // get the main iPod Library playlist(leaving the unimportant portion)

for(j=0; j <= iPodLibraryPlaylist.Tracks.Count - 1; j++) {
        foo = iPodLibraryPlaylist.Tracks.Item(j+1);    // j+1, coz this index is 1-based (why apple...why?)
        bar = mainLibrary.Tracks.ItemByPersistentID(iTunesApp.ITObjectPersistentIDHigh(foo), iTunesApp.ITObjectPersistentIDLow(foo));
        WScript.StdOut.WriteLine(bar.Name);    // should print the name of the track, but throws runtime error: Object required
}

iTunes COM APIによると

_ _ 適切なコレクションインターフェイスのItemByPersistentIDプロパティを使用して、指定された永続IDでソース、プレイリスト、またはトラックを取得できます。

ItemByPersistentIDは、指定された永続IDを持つIITTrackオブジェクトを返します _ _

今の質問は次のとおりです。

  1. 私は、トラックの64ビット永続IDが iTunesライブラリは、トラックがiPodに転送されても同じままです。

  2. 私が使用している方法に何か問題がありますか 「ITObjectPersistentIDHigh()」および「ITObjectPersistentIDLow()」

  3. これを行うためのまったく他の方法はありますか?

シモンズ:テストiPodに662曲があるので、そこに問題はない

任意の助けは大歓迎です! THNX!

2 Answer


0


最新のnanoを持っていて、ボイスオーバー機能をオンにすると、IDは変わりますが、そうでなければ変わりません。 IDが同じではないため、同期するときにSWが再生回数と再生時間を更新する方法を理解しようとしています。


0


私はそれをやるには他の方法が1つしかないとは思いません。それは、iPodの各トラックについて、名前、アルバム、長さなどをライブラリにあるものと比較することです。 しかし、私はそれが非常に効果的な解決策になるとは考えていません。ただ「プログラミングが簡単な」解決策にすぎません。

私はあなたがしたようにpersistentIDを使いました(プレイリストにはありますが)。 それは動作するはずです…​ たぶんあなたはintとしてパラメータを設定する必要があります…​