2

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 オブジェクトを返します

質問は次のとおりです。

  1. トラックが iPod に転送されたとき、iTunes ライブラリ内のトラックの 64 ビットの Persistent ID は同じままであると言っているのは正しいでしょうか。
  2. ITObjectPersistentIDHigh()との使用方法に何か問題がありますかITObjectPersistentIDLow()
  3. これを行う完全に他の方法はありますか?

PS: テスト用の iPod には 662 曲ありますので問題ありません。

どんな助けでも大歓迎です!thnx!

4

2 に答える 2

0

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

私はあなたがしたのと同じようにpersistentIDを使用しました(プレイリストではありますが)。動作するはずです...パラメータをintとして設定する必要があるかもしれません...

于 2011-04-14T19:10:28.377 に答える
0

最新の nano を使用していて、ボイスオーバー機能をオンにすると、ID が変更されます。それ以外の場合は変更されません。IDが同じではないため、同期するときに再生回数と時間を更新することをSWがどのように知っているかを理解しようとしています。

于 2009-12-10T20:06:58.683 に答える