Applescript 从 iTunes URL 播放音乐

标签 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 直接将音乐添加到我的音乐库?

最佳答案

免责声明:我没有订阅 Apple Music,因此我这边的 UI 可能与您的不完全相同。但是,如果我单击“播放”按钮,我会收到一个小广告,要求我注册该服务,我认为如果您有该服务,它只会播放音乐。因此,这些是我能够让该框弹出的步骤:

首先,也是最方便的 AppleScript,尝试的事情就是点击空格键开始播放音乐。如果我通过单击手动选择项目,这实际上非常有效。然而,在 open location 之后,它不起作用,这似乎是因为即使该行在查看器中突出显示,实际的键盘焦点似乎在页面本身(iTunes Store和 Apple Music 似乎将其整个 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

关于Applescript 从 iTunes URL 播放音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49647648/

相关文章:

macos - Applescript 删除 Outlook 2011 中某个类别的邮件

objective-c - 以编程方式解锁 MAC

iphone - iPhone 应用程序可以向 iTunes 添加音乐吗?

ios - iTunes 跨平台 IAP 订阅——Netflix 是怎么做到的?

macos - 如何将变量从 applescript 传递到 shell 脚本?

macos - 如何将多个参数传递给 osascript?

cocoa - 如何从 AppleScript 访问 Cocoa-AppleScript 应用程序中的捆绑文件?

iphone - 将低于最新版本的 IOS 版本安装到设备

ios - Ad hoc iOS应用-不带iTunes分发

asp.net - 使用 IIS 下运行的 ASP.NET 控制 iTunes