有没有办法使用AppleScript在Google Chrome中暂停YouTube视频?

有没有办法使用AppleScript在Google Chrome中暂停YouTube视频?,applescript,Applescript,我尝试的是键入告诉应用程序“Google Chrome”暂停,并在Google Chrome中暂停音频或视频。它不起作用,因为它认为暂停是一个变量 是否有任何方法可以暂停所有应用程序中的音频或视频,或者只暂停Google Chrome?以下AppleScript代码将暂停或播放Google Chrome中任何窗口的任何选项卡中的YouTube视频实例(无论是否可见) 从评论中: 以下示例AppleScript代码将在Google Chrome的前窗口的活动选项卡中播放/暂停一段YouTube视频

我尝试的是键入
告诉应用程序“Google Chrome”暂停
,并在Google Chrome中暂停音频或视频。它不起作用,因为它认为暂停是一个变量


是否有任何方法可以暂停所有应用程序中的音频或视频,或者只暂停Google Chrome?

以下AppleScript代码将暂停或播放Google Chrome中任何窗口的任何选项卡中的YouTube视频实例(无论是否可见)

从评论中:

以下示例AppleScript代码将在Google Chrome的前窗口的活动选项卡中播放/暂停一段YouTube视频:
告诉应用程序“Google Chrome”告诉前窗口的活动选项卡执行javascript“document.getElementsByClassName('ytp-play-button ytp button')[0]。单击();“

@user3439894这一个工作得很好,因为我只想在活动选项卡中暂停视频。有没有办法检查视频是否已暂停,以便不会取消暂停视频?你也可以写下这个评论作为答案,这样我就可以接受它作为正确的答案吗

使用JavaScript可能有一种更简单的方法来确定Google Chrome中前窗口的活动选项卡是否有YouTube视频播放,但是,由于我不知道它的代码,这里有一种方法适合我

下面显示的示例AppleScript代码在脚本编辑器中使用Google ChromemacOS Catalina10.15.7和macOS Big Sur11.2.3下进行了测试(版本90.0.4430.93(官方版本)(x86_64))在系统首选项中设置语言和地区,设置为英语(美国)-初级,为我工作,没有问题1

  • 1假设已根据需要设置/处理系统首选项中的必要和适当设置安全和隐私隐私

示例AppleScript代码:

如果不运行——
应用程序“谷歌浏览器”,然后返回
告诉应用程序“谷歌浏览器”
如果(窗口计数)=0,则返回
将atx设置为其前窗口的活动选项卡索引
结束语
告诉应用程序“系统事件”
--#macOS Big Sur系统事件错误问题。
--#如果运行macOS Big-Sur,请取消注释下一个
--#如果系统事件报告错误,则两行。
--跑
--延迟0.5
告诉应用程序进程“Chrome”
如果(
属性“AXTitle”的
atx的单选按钮
表组1,共页
第1组:
前窗(
不以“音频播放”结束,然后返回
结束语
结束语
告诉应用程序“Google Chrome”到
告诉其前窗口的活动选项卡
执行javascript
“document.getElementsByClassName('ytp-play-button ytp button')[0]。单击();”

注意事项:

按照编码,只有在Google Chrome前窗口的活动选项卡中播放YouTube视频时,才会执行
javascript
,从而将其暂停。无论活动选项卡或任何窗口的任何选项卡如何,编码后的代码都不能导致播放暂停的视频

——#macOS Big Sur系统事件错误问题。
示例中的AppleScript代码部分试图解决macOS Big Sur中的系统事件问题,没有它的完全相同的代码在macOS Catalina中运行时没有问题,可能无法运行或需要调整。我仍在尝试解决这个问题。根据我的经验,该问题无法随意再现,因此,如果问题持续存在且无法诊断,则可能必须使用替代方法

某些错误的部分原因可能是使用下测试的准确版本以外的版本,尤其是在使用系统事件的任何UI脚本场景中涉及层次UI元素结构更改的错误

  • 有没有办法在所有应用程序中暂停音频或视频,或者只使用谷歌浏览器

    • 通常,按下键盘上的播放/暂停键应该暂停谷歌Chrome中的视频,以及大多数其他应用程序
  • 它不起作用,因为它认为暂停是一个变量


    • pause
      不是googlechrome中的AppleScript字典的一部分,以及为什么它显示为变量
Google Chrome中,运行包含JavaScriptAppleScript代码需要选中允许来自Apple Events的JavaScript菜单项:ViewDeveloper——请注意,这曾经是默认设置,但有时会被更改。有关更多信息:



注意:示例AppleScript代码就是这样的,任何包含的错误处理都不包含任何其他适当的错误处理。用户有责任根据需要添加任何适当的错误处理。请查看中的语句和语句。另见。此外,在适当的情况下,可能需要在事件之间使用该命令,例如延迟0.5,延迟值设置适当。

我的解决方案包括在特定环境中运行2个AppleScript

我在youtube上使用1个窗口的Brave浏览器(我想谷歌chrome也是如此)和2个标签就可以了

第一个脚本强制打开浏览器,第二次运行击键“K”

I h
pauseOrPlayYoutubeInChrome("ytp-play-button ytp-button", 0)

to pauseOrPlayYoutubeInChrome(theClassName, elementnum)
    tell application "Google Chrome"
        set youtubeTabsRef to a reference to (tabs of windows whose URL contains "youtube")
        repeat with youtubeTabs in youtubeTabsRef
            execute youtubeTabs javascript "document.getElementsByClassName('" & ¬
                theClassName & "')[" & elementnum & "].click();"
        end repeat
    end tell
end pauseOrPlayYoutubeInChrome
tell application "Brave Browser"
if it is not running then launch
activate
end tell


tell application "System Events"
keystroke "k"
end tell