Macos 如何判断youtube视频何时停止从终端播放?马科斯

Macos 如何判断youtube视频何时停止从终端播放?马科斯,macos,applescript,osx-elcapitan,Macos,Applescript,Osx Elcapitan,有没有办法从终端确定youtube视频是否已在我的浏览器中播放完毕?因为您的问题有一个标记,我将演示一种方法,可以确定视频的播放/暂停/结束状态(例如演示如何将球体翻转的链接视频) 你没有提到你使用什么浏览器。我使用的是Safari,所以我将在我的AppleScript代码中使用它,但是,在Google Chrome中也同样可以实现。此方法在Firefox中不起作用 浏览器设置必须允许来自Apple Events的JavaScript,并且允许远程自动化。在Safari中,这些可在“开发”菜单中

有没有办法从终端确定youtube视频是否已在我的浏览器中播放完毕?

因为您的问题有一个标记,我将演示一种方法,可以确定视频的播放/暂停/结束状态(例如演示如何将球体翻转的链接视频)

你没有提到你使用什么浏览器。我使用的是Safari,所以我将在我的AppleScript代码中使用它,但是,在Google Chrome中也同样可以实现。此方法在Firefox中不起作用

浏览器设置必须允许来自Apple Events的JavaScript,并且允许远程自动化。在Safari中,这些可在“开发”菜单中找到

检查YouTube视频页面的HTML DOM时,似乎存在一个
元素,该元素用作HTML5渲染视频对象的容器,该对象的类名被动态更新,以包含一个标签,该标签指示视频是播放的暂停的,还是结束的,以及,此外,除此之外,没有其他元素在其类名中包含这些标签

下面的AppleScript只是在web浏览器的YouTube选项卡中运行一个JavaScript命令,该命令确定所讨论的
元素是否属于类
播放模式
暂停模式
,或
结束模式

    tell application "Safari" to tell front window to tell ¬
        (first tab whose URL contains "youtube.com/watch?v=") to ¬
        do JavaScript [¬
            "document", ¬
            ".querySelectorAll('div[class*=\"-mode\"]')[0]", ¬
            ".className", ¬
            ".match(/(playing|paused|ended)-mode/)[1]"] ¬
            as text
它返回
播放
暂停
结束
来表示视频的状态,或者
当前应用程序
如果存在JavaScript错误(例如,没有匹配的元素或类名标签)

您可以在脚本编辑器中运行此脚本,也可以使用
osascript
命令从终端运行此脚本:

    osascript -e 'tell application "Safari" to tell front window to tell ¬' \
              -e '(first tab whose URL contains "youtube.com/watch?v=") to ¬' \
              -e '    do JavaScript ["document", ¬' \
              -e '        ".querySelectorAll(\"div[class*=-mode]\")[0]", ¬' \
              -e '        ".className", ¬' \
              -e '        ".match(/(playing|paused|ended)-mode/)[1]"] ¬' \
              -e '    as text'

同样,这将返回
播放
暂停
,或
结束
;在JavaScript错误事件中没有任何内容;以及在发生AppleScript错误时出现的错误消息(例如,Safari中没有打开YouTube选项卡)。

当从Safari的“开发”菜单中单击“允许来自Apple Events的JavaScript”并收到此消息时“您确定要允许来自Apple Events的JavaScript吗?恶意程序可以使用此功能来伤害您的计算机或窃取您的个人或财务信息,如密码、照片或信用卡。“,在单击“允许”按钮之前,它确实会让人三思而后行!”+感谢你的警告。如果我真的需要使用此功能,如何避免恶意程序使用此功能?不下载到计算机上运行的脚本,这些脚本不是来自可靠来源和/或您不知道它们的用途。此外,要保护计算机的物理安全,请设置密码,以便在您不在时将其从睡眠中唤醒,并且不允许其他人在您不在场的情况下使用您的计算机(以防他们决定植入/编写在后台运行的脚本)。还有一个选项允许从智能搜索字段使用Javascript;不要允许这样做,或者在使用后立即将其停用,否则网站可能会在您的计算机上执行代码。您也可能会使用ClamXav或其他您喜欢的程序定期扫描恶意软件(恶意软件)。这些可以检测一般的安全威胁,包括在后台运行的恶意脚本。我相信其他人也可以给出一些建议。我个人并不担心这种特殊的设置,但每个人都有不同的安全需求,在不同的环境中操作他们的机器,因此根据您自己的习惯,有不同程度的必要性。感谢CJK的精彩回复!