使用COM界面访问iTunes中新添加的曲目

时间:2011-05-10 17:26:35

标签: javascript com itunes

我正在尝试使用COM界面和JavaScript将曲目信息添加到iTunes中新添加的曲目。我能够成功添加文件,但无法使用OperationStatus.Tracks()获取它们。我知道在OperationStatus.InProgress()返回false之前,OperationStatus.Tracks()不可用。但是,当我尝试在我期望的OperationStatus对象上调用InProgress()时,我收到错误:“对象不支持此属性或方法。”

var iTunesApp = WScript.CreateObject("iTunes.Application");
var status = iTunesApp.LibraryPlaylist.AddFile('newfile.mp4');
WScript.Echo(status.InProgress());

任何人都可以了解这里出了什么问题吗?

2 个答案:

答案 0 :(得分:1)

此后我能够回答我自己的问题。当没有必要参数时,我只是添加空的parens。因此,方法和性质未得到认可。上面提到的最后一行将采用以下形式:
WScript.Echo(status.InProgress);

要访问最近添加的曲目,可以使用{{1}完成然后,可以按如下方式访问有关单个曲目的属性:
var newtracks = status.Tracks;
var newtrack = newtracks.ItemByName('filename');

答案 1 :(得分:0)

不要忘记AddFile的结果是异步的,因此您需要循环并等待才能访问数据。

var results = iTunesApp.AddFile( filepath );

// wait for the result to be available
while( results.InProgress )
    Thread.Yield(); 

foreach( var it in results.Tracks )
{
    tune = it as IITFileOrCDTrack;
    Console.WriteLine( "Track '{0} - {1}' was added to itunes library", tune.Artist, tune.Name );
}

要获取最新添加的曲目,我猜您可以创建智能播放列表,按添加的日期和访问周期排序,这可能比访问整个itunes DB更快。