You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在macOS终端中如何检测浏览器内YouTube视频是否播放结束

在macOS终端判断YouTube视频是否播放完毕的方法

嘿,在macOS终端里判断浏览器中的YouTube视频是否播放完毕,我整理了几个实用的方案,你可以根据常用的浏览器来选择:

方案1:用AppleScript调用浏览器执行JS(适用于Safari/Chrome/Edge)

这种方法本质是通过终端触发AppleScript,让浏览器运行一段JavaScript来检测视频状态,简单直接。

针对Safari

首先得给Safari开个权限:打开Safari的偏好设置 → 切换到「高级」标签 → 勾选「在菜单栏显示开发菜单」;然后点开顶部的「开发」菜单,选择「允许自动化」。

搞定权限后,在终端跑这条命令就行:

osascript -e 'tell application "Safari" to do JavaScript "document.querySelector('video.html5-main-video').ended;" in current tab of window 1'

如果返回true,说明主视频已经播放完毕;返回false就是还在播放(或者暂停了)。这里用video.html5-main-video是为了精准定位YouTube的主视频,避免把广告视频算进去。

针对Chrome/Edge

同样需要给终端权限控制浏览器(第一次运行时系统会弹出权限请求,允许就行),直接在终端跑这条命令:

osascript -e 'tell application "Google Chrome" to do JavaScript "document.querySelector('video.html5-main-video').ended;" in active tab of window 1'

返回值逻辑和Safari一样,true表示播放完毕,false表示还没结束。要是用Edge,把命令里的Google Chrome换成Microsoft Edge就行。

方案2:Chrome远程调试协议(适合脚本自动化场景)

如果你需要做更自动化的脚本(比如不需要手动开浏览器权限),可以试试Chrome的远程调试功能:

  1. 先把所有Chrome进程关掉,然后用这条命令启动Chrome并开启远程调试:
open -a "Google Chrome" --args --remote-debugging-port=9222

要是不需要可视化窗口,加上--headless=new就能开启无头模式。

  1. 用curl获取当前打开的标签页信息,找到YouTube页面的调试ID:
curl http://localhost:9222/json

在返回的JSON数据里,找到对应YouTube页面的id字段(看起来像一串随机字符,比如"id": "123abc...")。

  1. 发送请求执行JS检测视频状态:
curl -X POST -H "Content-Type: application/json" -d '{"id":1,"method":"Runtime.evaluate","params":{"expression":"document.querySelector('video.html5-main-video').ended;"}}' http://localhost:9222/json/version/123abc.../runtime/execute

把命令里的123abc...换成你刚才找到的ID就行。返回的JSON里,result.value字段就是状态:true表示播放完毕,false则相反。

一些小提醒

  • 不管用哪种方法,都要确保浏览器的活跃标签页是你要检测的YouTube视频页面,不然脚本找不到视频元素会报错。
  • 如果遇到广告干扰,video.html5-main-video这个选择器能精准定位主视频,比直接用video靠谱得多。
  • Chrome远程调试的ID每次启动都会变,要是写自动化脚本,得加一步动态提取ID的逻辑。

内容的提问来源于stack exchange,提问作者matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:05:18