Нужно объяснение в iTunes COM постоянный идентификатор. Идентичен ли трек при передаче его на iPod?
Я пишу сценарий JScript с iTunes COM API для обновления ratings
а также 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
}
По API iTunes COM
Вы можете извлечь источник, список воспроизведения или дорожку с указанным постоянным идентификатором, используя свойство ItemByPersistent ID соответствующего интерфейса коллекции.
ItemByPersistent ID возвращает объект IITTrack с указанным постоянным идентификатором
Теперь вопросы:
- Прав ли я, говоря, что 64-разрядный постоянный идентификатор для дорожки в медиатеке iTunes остается прежним, когда дорожка передается на iPod.
- Что-то не так в том, как я использую
ITObjectPersistentIDHigh()
а такжеITObjectPersistentIDLow()
- Есть ли другой способ сделать это?
PS: на тестовом iPod 662 песни, поэтому проблем нет
Любая помощь высоко ценится! Thnx!
2 ответа
Если у вас установлена последняя версия nano и включена функция озвучивания, идентификатор меняется, в противном случае - нет. Я пытаюсь выяснить, как SW знает, как обновить счетчик воспроизведения и время при синхронизации, поскольку идентификатор не совпадает.
Я не думаю, что есть только один другой способ сделать это, очень длинный: сравнить, для каждого трека в iPod, названия, альбомы, длины и т. Д. С тем, который у вас есть в вашей библиотеке. Однако я не думаю, что это будет очень эффективное решение, просто "простое в программировании".
Я использовал persistentID так же, как вы (хотя и в плейлисте). Это должно работать... Может быть, вы должны установить параметр как int...