2010-07-07 65 views
0

我想通過iTunes解決以下問題:在搜索完一首曲目後(通過按cmd + opt + f移至搜索字段),我希望能夠播放歌曲列表中的第一首曲目。理想情況下,我希望cmd + enter可以開始播放歌曲列表中的第一首曲目,並將焦點移至歌曲列表中。例如,我在搜索框中輸入「61號高速公路」,按cmd +回車鍵,然後開始播放「喜歡滾石」。如何將第一響應者與applescript一起移動?

我最初的想法是將焦點從搜索字段移動到歌曲列表,選擇第一首歌曲並播放它。

這是我有:

tell application "iTunes" 
    set first responder of (window 1) to outline "songs" 
end tell 

當我嘗試運行此腳本的AppleScript編輯器拋出一個語法錯誤「預期的類名發現標識符」,並強調responder。該腳本遵循與我在網上找到的許多applescript相同的形式。我究竟做錯了什麼?撇開/咆哮:Applescript是我曾經對自己造成過愚蠢的最令人沮喪和困惑的技術。我討厭它。我討厭它。我討厭它。我討厭它。

+0

而不是根據UI窗口系統,您可以表達您在iTunes術語中要做的事情嗎?然後,可以更容易地建議是否可以在適當的iTunes專用AppleScript代碼片段中執行所需的操作。 – 2010-07-07 19:22:38

+0

@Ned Deily - 我已經添加了一個開頭段落來解釋我最終想要達到的目標。 – 2010-07-07 19:54:15

回答

3

Applescript的語法是特殊的,但從GUI的統一腳本語言來說它並不壞。這是(現在仍然)是令人驚訝的事情。一旦你通過蘋果的語言定義which can be found here,奇怪的sytanx也並不奇怪。

也就是說,您需要打開每個應用程序的AppleScript Dictionary以查看定義了哪種名詞和動詞。 從AppleScript的角度考慮將應用程序作爲類和方法的庫。當然,你不能調用圖書館沒有定義的方法,對嗎?

啓動AppleScript編輯器,進入文件→打開字典,然後選擇iTunes。你很快就會發現沒有像first responder這樣的名詞被定義。

問題是,應用程序通常只公開其內部對象結構,而不是UI的每個元素。但通常這就夠了。

如果你想做的事不能用適當的Applescript界面​​來完成,那麼作爲最後的手段,你可以使用稱爲「系統事件」的助手應用程序直接操作UI元素。

因此,再次進入文件→打開字典,這次選擇「系統事件」,並檢查「過程套件」的內容。它允許你操作UI。例如,要獲取所有UI元素的列表,請使用

tell application "System Events" 
    tell application process "iTunes" 
      get UI elements of window 1 
    end tell 
end tell 

玩得開心! Applescript對我來說看起來很可怕,但一旦我知道我需要總是參考字典,這並不是一件壞事。

Mac OS X Automation是一個很好的教程來源。

+1

很好的建議。請記住,如果應用程序不提供自己有用的Apple Events界面,則操縱UI元素是最後一招。 iTunes *確實*提供了一個有用的界面,所以你可能不需要在這個級別工作。看到我上面的評論。 – 2010-07-07 19:27:20

+0

我衷心地同意你所說的話。 – Yuji 2010-07-07 19:36:10

+0

謝謝。這給了我一些工作。 – 2010-07-07 19:55:14

0

如果我理解正確,你不需要AppleScript來做到這一點。只需按下Tab鍵即可在元素之間移動焦點。例如,在我的情況下,按下Tab鍵將焦點從搜索框移到左側選擇欄,然後移到主要歌曲列表,然後再次返回到搜索框。

編輯解決您對問題的進一步細化:您可以從搜索到使用兩個鍵擊 - TAB將焦點移出搜索框到歌曲列表,然後SPACE播放選區中的第一首曲目。您也可以使用箭頭鍵選擇不同的選擇。

只是爲了好玩,不過,這裏有一個方法,你可以在AppleScript的做全序列:

tell application "iTunes" 
    play first item of (search first library playlist for "Highway 61") 
end tell 
+0

你是對的,標籤完美工作(儘管奇怪的不是在網格視圖)。然而,我解釋了我的問題做了一件糟糕的工作,所以這並沒有解決這個問題。我已經更新了這個問題。 – 2010-07-07 20:55:14

+0

似乎適用於我的任何觀點:列表,網格或封面流程。 – 2010-07-07 21:03:59

0

據我所知,iTunes不能執行命令set first responder of。 Applescript工作室執行這樣的命令。

相關問題