2011-05-10 64 views
1

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

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

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

回答

1

我已经能够回答我自己的问题。当不需要参数时,我只是简单地添加空的参数。因此,这些方法和性质未被认可。上面提到的最后一行将在下面的表格工作:
WScript.Echo(status.InProgress);

要访问最近添加可以使用
var newtracks = status.Tracks;

然后进行访问属性有关个人的轨迹可以完成曲目如下:
var newtrack = newtracks.ItemByName('filename');
WScript.Echo(newtrack.Name);

+0

我想知道你是如何设置javascript来访问iTunes的,我有itunes sdk但是它的.h和.c文件(它们是c类型语言的源文件)。我正在尝试使用运行在本地html文件上的JavaScript来从iTunes获取正在播放的信息并将其显示在页面上。 (这是所有在本地计算机上) – 2012-06-27 13:34:31

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更快。

+0

对不起没有意识到问题是在JavaScript中...仍然我认为这仍然是一个有效的点 – draeron 2014-01-11 22:27:04