需要对iTunes COM持久ID进行说明。传输到iPod时,轨道的ID是否相同?

时间:2009-10-27 19:44:15

标签: com javascript ipod itunes-sdk

我正在用iTunes COM api编写一个JScript脚本,用于将iPod数据库中的ratingsplayed count更新回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返回IITTrack   具有指定持久性的对象   ID

现在的问题是:

  1. 我说的是,当曲目传输到iPod时,iTunes资料库中曲目的64位持久ID仍然相同。
  2. 我使用ITObjectPersistentIDHigh()ITObjectPersistentIDLow()
  3. 的方式有什么问题吗?
  4. 还有其他方法吗?
  5. PS:测试iPod上有662首歌曲,所以没有问题

    非常感谢任何帮助!日Thnx!

2 个答案:

答案 0 :(得分:0)

如果你有最新的nano,并打开画外音功能,那么ID会改变,否则就不会改变。我试图找出SW知道如何更新播放计数和同步时间,因为ID不一样。

答案 1 :(得分:0)

我不认为只有另外一种方法,很长时间: 比较iPod中每个曲目的名称,专辑,长度等与图书馆中的名称,专辑,长度等。但是,我不认为这将是一个非常有效的解决方案,只是一个“易于编程”的解决方案。

我像你一样使用了persistentID(虽然在播放列表中)。它应该工作......也许你应该将参数设置为int ...