ratings更新用の iTunes COM API を使用して JScript スクリプトを作成しplayed count、iPod データベースから iTunes ライブラリに戻しています。そのためには、スクリプトはこの 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 オブジェクトを返します
質問は次のとおりです。
- トラックが iPod に転送されたとき、iTunes ライブラリ内のトラックの 64 ビットの Persistent ID は同じままであると言っているのは正しいでしょうか。
ITObjectPersistentIDHigh()との使用方法に何か問題がありますかITObjectPersistentIDLow()- これを行う完全に他の方法はありますか?
PS: テスト用の iPod には 662 曲ありますので問題ありません。
どんな助けでも大歓迎です!thnx!