2011-01-06 63 views
2

我有我想在我的Mac上運行刪除從我的所有歌曲的收視率在iTunes這個很基本的AppleScript:選擇iTunes中的所有曲目使用AppleScript

tell application "iTunes" 
    set sel to every track in library playlist 
    repeat with i from 1 to the count of sel 
     set rating of track i in sel to 0 
    end repeat 
end tell 

我從來沒有寫過什麼在AppleScript之前,但我認爲我會給它一個鏡頭(因爲它應該是非常直觀的)。不幸的是,當我嘗試運行腳本時收到此錯誤:

error "Can’t get every track of library playlist." number -1728 
from every «class cTrk» of «class cLiP» 

這是什麼錯誤?在iTunes中是否有另一種選擇曲目的方式?謝謝你的幫助。

回答

2

我不完全知道爲什麼,但答案是,庫播放列表實際上不包含曲目。奇怪,我知道,但是因爲你只是想在每個軌道上運行這個,所以還有一個更簡單的解決方案。而不是every track of library,只需使用every track;這將實際上應用程序中的每個軌道,這就是你想要做的。並與其他一些簡化,這成爲

tell application "iTunes" to set the rating of every track to 0 

tell application "iTunes" to ...語法就像一個普通的tell塊,但它只有一個語句長,不採取end tell。並且您可以自動運行set命令遍歷列表中的每個條目,這就是您所需要的。一般來說,你很少需要通過索引來枚舉;例如,對於一些更貼近您的解決方案,有相當於

tell application "iTunes" 
    repeat with t in every track 
    set the rating of t to 0 
    end repeat 
end tell 

這就避免了索引,也可能會更快(雖然一個班輪將可能是最快的,如果有區別)。

+0

感謝您的簡潔回答和解釋。非常感激! – squircle 2011-01-07 01:34:39

1

你被誤導了:AppleScript不是很直觀,主要是因爲它的很多觀察行爲是由每個應用程序的對象模型的實現決定的。雖然它可能非常強大,但您經常只需要進行實驗,直到找到適用於特定應用程序的正確咒語爲止。

在這種情況下,您需要選擇第一項播放列表。注意區別:

get library playlist 
    Result: 
     library playlist -- the class 
get library playlists 
    Result: 
     {library playlist id 51776 of source id 67 of application "iTunes"} -- a list 
get first library playlist 
    Result: 
     library playlist id 51776 of source id 67 of application "iTunes" -- first item 

但你可能想要做的是更多的東西是這樣的:

tell application "iTunes" 
    repeat with tr in every track in first Library playlist 
     set rating of tr to 60 -- values are 0 to 100 
    end repeat 
end tell 

如果你有一個大型圖書館,你可能要第一個實驗用較小的播放列表中,實例,請在測試播放列表中選擇一個曲目,然後在repeat語句中替換in current playlist

+0

感謝您對腳本返回的不同結果的解釋。我已經接受了其他答案,因爲它是我測試中最簡潔和最快的答案。乾杯! – squircle 2011-01-07 01:34:58

+0

我發現AppleScript通常感覺像是一種「只讀」語言 - 無論結果如何,通常都是可讀的,但如果沒有經驗,那麼到達那裏可能會很艱難。 – 2011-01-07 05:10:23

+0

我看到兩個主要問題:1.各種應用程序的Apple事件和對象模型接口的不一致和不可預測的行爲; 2. AppleScript語言本身的怪癖。用戶可以對前者做的事情並不多(儘管Cocoa提供的內置腳本功能有助於在應用之間提供更一致的體驗)。我對後者的首選解決方案是避免在AppleScript中編寫程序,而是使用py-appscript,它提供了更豐富的語言和庫python(還有用於Ruby的rb-appscript)的好處。 – 2011-01-07 05:32:50

相關問題