2011-05-10 68 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