Applescript播放iTunes URL中的音乐

时间:2018-04-04 09:38:53

标签: applescript itunes

以下脚本将在iTunes中打开一个曲目

use application "iTunes"
property trackURL : "itmss://itunes.apple.com/us/album/brahms-violin-concerto-in-d-major-op-77-iii-allegro/145533236?i=145533044&uo=4"
open location trackURL

现在,要求“iTunes”播放它不起作用,因为曲目突出显示但未正确选择,即需要手动鼠标点击选择并播放。

如何选择突出显示的曲目?或者我怎么能要求“iTunes”播放这首歌?!或者,有没有办法直接从URL添加音乐到我的库?

1 个答案:

答案 0 :(得分:4)

免责声明:我没有Apple Music订阅,因此我的UI可能与您的UI不完全相同。但是,如果我点击" Play"按钮,我得到一个小广告,要求我注册该服务,如果你有这项服务,我认为只会播放音乐。所以,这些是我能够遵循的步骤,以便弹出该框:

第一个,也是最方便的AppleScript,尝试的只是打空格键开始播放音乐。如果我通过点击手动选择了该项目,这实际上很有用。但是,在open location之后,它不起作用,这似乎是因为即使在查看器中突出显示该行,实际的键盘焦点似乎也在页面本身(iTunes Store和Apple)上音乐似乎将其整个UI呈现为WebKit呈现的网页。您可以通过点击键盘上的向上和向下箭头键来验证这一点;页面向上和向下滚动,而不是切换到相邻的曲目。

我的观点是,这实际上是iTunes中的一个错误;我认为问题的真正解决方案是通过the bug reporter向Apple报告。使用open location确实应该将键盘焦点设置为导航到的轨道。

话虽如此,我们可以通过模拟点击"播放"在短期内解决它。按钮。请注意,您可能需要在“系统偏好设置”>中添加您的应用。安全和隐私>可访问性。还要注意,这是非常脆弱的,如果Apple改变了他们所服务的网页布局中的任何内容,那么整个事情就会破裂。最后,请注意这段代码非常难看;整个事情只是通过观察它给我荨麻疹,但它是我唯一能够上班的东西。阅读此代码的副作用可能包括恶心,头痛和自杀念头。吃完后不要立即阅读此代码。如果您有抑郁症或强迫症的病史,请在阅读本规范前咨询您的医生。

property trackURL : "itmss://itunes.apple.com/us/album/brahms-violin-concerto-in-d-major-op-77-iii-allegro/145533236?i=145533044&uo=4"
property trackTitle : "III. Allegro giocoso, ma non troppo vivace"

tell application "iTunes"
    activate
    open location trackURL
    delay 1 -- give the page a second to load
end tell

tell application "System Events"
    tell process "iTunes"
        set theRows to the rows of table 1 of UI element 1 of scroll area 1 of group 1 of group 1 of front window

        -- "repeat with eachRow in theRows" isn't working. I don't know why. Freaking AppleScript
        repeat with i from 1 to the number of theRows
            set eachRow to item i of theRows

            if exists group 2 of UI element 2 of eachRow then
                if value of static text 1 of group 1 of group 2 of UI element 2 of eachRow is trackTitle then
                    tell group 1 of UI element 2 of eachRow to click
                end if
            end if
        end repeat
    end tell
end tell

如果Apple修复了这个错误,当然,我们应该能够:

tell application "iTunes"
    activate
    open location trackURL
    delay 1 -- give the page a second to load
end tell

tell application "System Events" to keystroke space