如何判断 youtube 视频何时停止从终端播放?苹果系统
How to tell when youtube video stops playing from the terminal? macOS
有没有办法从终端确定 YouTube 视频是否已在我的浏览器中播放完毕?
因为您的问题有一个 applescript tag, I'll illustrate one method that can determine the playing/paused/ended status of a YouTube video(例如演示如何将球体内外翻转的链接视频)。
你没有提到你使用的是什么浏览器。我使用 Safari,所以我将在我的 AppleScript 代码中使用它,但是,在 Google Chrome。此方法在 Firefox.
中无效
浏览器设置必须允许 JavaScript 来自 Apple Events,并且允许远程自动化。在 Safari 中,这些在 开发 菜单中可用。
检查 YouTube 视频页面的 HTML DOM 时,似乎有一个用作容器的 <div>
元素对于 HTML5 渲染的视频对象,其 class 名称动态更新以包含一个标签,表示视频是否正在 播放 、 暂停 或 ended,此外,除此之外,没有其他元素在其 class 名称中包含这些标签。
下面的 AppleScript 只是 运行s 一个 JavaScript 命令在网络浏览器的 YouTube 选项卡中确定 <div>
元素是否在问题是 class playing-mode
、paused-mode
或 ended-mode
:
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
它 return 可以 playing
、paused
或 ended
来表示视频的状态,或者 current application
如果有 JavaScript 错误(例如,没有匹配的元素或 class 名称标签)。
您可以在脚本编辑器中运行此脚本,或者通过终端使用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'
同样,这将 return playing
、paused
或 ended
;在 JavaScript 错误的情况下什么都没有;以及出现 AppleScript 错误时的错误消息(例如 YouTube 选项卡在 Safari 中打开)。
有没有办法从终端确定 YouTube 视频是否已在我的浏览器中播放完毕?
因为您的问题有一个 applescript tag, I'll illustrate one method that can determine the playing/paused/ended status of a YouTube video(例如演示如何将球体内外翻转的链接视频)。
你没有提到你使用的是什么浏览器。我使用 Safari,所以我将在我的 AppleScript 代码中使用它,但是,在 Google Chrome。此方法在 Firefox.
中无效浏览器设置必须允许 JavaScript 来自 Apple Events,并且允许远程自动化。在 Safari 中,这些在 开发 菜单中可用。
检查 YouTube 视频页面的 HTML DOM 时,似乎有一个用作容器的 <div>
元素对于 HTML5 渲染的视频对象,其 class 名称动态更新以包含一个标签,表示视频是否正在 播放 、 暂停 或 ended,此外,除此之外,没有其他元素在其 class 名称中包含这些标签。
下面的 AppleScript 只是 运行s 一个 JavaScript 命令在网络浏览器的 YouTube 选项卡中确定 <div>
元素是否在问题是 class playing-mode
、paused-mode
或 ended-mode
:
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
它 return 可以 playing
、paused
或 ended
来表示视频的状态,或者 current application
如果有 JavaScript 错误(例如,没有匹配的元素或 class 名称标签)。
您可以在脚本编辑器中运行此脚本,或者通过终端使用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'
同样,这将 return playing
、paused
或 ended
;在 JavaScript 错误的情况下什么都没有;以及出现 AppleScript 错误时的错误消息(例如 YouTube 选项卡在 Safari 中打开)。