![我可以通过命令行在 Chrome 中暂停 YouTube 吗?](https://linux22.com/image/976245/%E6%88%91%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%9C%A8%20Chrome%20%E4%B8%AD%E6%9A%82%E5%81%9C%20YouTube%20%E5%90%97%EF%BC%9F.png)
我可以通过暂停所有系统程序播放(好吧,切换)来暂停 Spotify。我该如何做才能在 Google Chrome 中暂停/播放 YouTube 视频?
答案1
Chromium 现在使用 D-Bus 为浏览器中当前活动的媒体内容实现 MPRIS,而基于 Chromium 构建的浏览器(例如 Google Chrome 和 Brave)继承了此功能。这意味着可以使用以下实用程序控制此类浏览器中当前活动的媒体内容:播放器控制可以发送和接收 MPRIS 命令。
您可以下载并安装 playerctl来自 GitHub 上的发布部分然后运行此命令来暂停 Chrome 中当前正在运行的媒体:
$ playerctl pause
或者你可以控制 Chrome 的特定实例:
$ playerctl --list-all
chrome.instance24818
$ playerctl --player=chrome.instance24818 pause
答案2
嗯,我想你总是可以使用类似工具xdotool
将按键发送k到你的 YouTube 窗口。这种方法的缺点是你必须先激活窗口,然后才能发送按键(Chrome 在未聚焦时会忽略键盘输入)。
以下脚本可能适合你
#!/bin/bash
# Dependencies: xdotool (sudo apt-get install xdotool)
# Functions
save_active () {
# get current workspace
ActiveDesktop="$(xdotool get_desktop)"
# get current active window ID
ActiveWindowID="$(xdotool getactivewindow)"
# get current active window name
ActiveWindowName="$(xdotool getwindowname "$ActiveWindowID")"
}
restore_active(){
xdotool set_desktop "$ActiveDesktop"
# Activating the root window (Desktop) results in an error message, so we
# try to avoid it
[[ "$ActiveWindowName" != "Desktop" ]] && xdotool windowactivate "$ActiveWindowID"
}
youtube_playpause(){
xdotool search --name YouTube windowactivate
sleep 0.1
xdotool key --clearmodifiers k
}
# Main
## save active window and desktop
save_active
## activate Chrome YouTube window and send keyboard event
youtube_playpause
## restore previously active window/desktop
restore_active
如果您想使用媒体键控制 YouTube,似乎有一些扩展程序声称可以将此功能添加到 Chrome:
我还没有亲自尝试过。
答案3
您可以使用以下方式启动 Chrome 会话(使用您的 Youtube 播放列表)Chrome WebDriver:
WebDriver是一款开源工具,用于跨多种浏览器自动测试 Web 应用程序。它提供导航到网页、用户输入、JavaScript 执行等功能。ChromeDriver 是一款独立服务器,它为 Chromium 实现了 WebDriver 的有线协议。ChromeDriver 适用于 Android 上的 Chrome 和铬合金 在桌面上(Mac、Linux、Windows 和 ChromeOS)。
安装以下依赖项:
sudo apt-get install python-selenium
并从以下位置下载 Chromedriver这里,选择与您的体系结构相对应的一个,例如:
http://chromedriver.storage.googleapis.com/2.14/chromedriver_linux64.zip 或者http://chromedriver.storage.googleapis.com/2.14/chromedriver_linux32.zip
chromedriver
例如,在您的文件夹中提取文件$HOME
。
然后从 python 启动 chromedriver,打开终端并输入:
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> from selenium import webdriver
>>> from selenium.webdriver.chrome.options import Options
>>> chrome_options = Options()
>>> chrome_options.add_argument("--disable-sync")
>>> driver = webdriver.Chrome(os.path.expanduser('~/chromedriver'), chrome_options=chrome_options)
>>> # Open the desired youtube page:
>>> driver.get('https://www.youtube.com/watch?v=NxD_kWK8A5M&list=PLMquns5MbFKm_cVrB0ZjKlIlS5HCQL1dL')
>>> # Let selenium find the player container <div>
>>> video = driver.find_element_by_id("player-api")
>>> # And just click to play/pause your video:
>>> video.click()
>>>
笔记:您仍然可以使用 Chrome WebDriver 启动的 Chrome 实例在其他选项卡中浏览。即使 Youtube 选项卡不是活动选项卡(无焦点)。事件video.click()
将继续起作用。
答案4
简单:在一个 chrome 会话中运行 spotify/youtube,在另一个 chrome 会话中运行所有其他内容。然后只需
kill -SIGSTOP [pid]
暂停,然后:
kill -SIGCONT [pid]
恢复。
如果你编写一个小脚本来打开两个 chrome 会话,方法如下:
google-chrome http://spotify.com/myplaylist http://youtube.com/myplaylist &
pgrep google-chrome > /tmp/TimChromepid.RUN
google-chrome &
并为你的切换脚本准备好 pid:
if [ -f /tmp/TimChromepid.RUN ]; then
mv /tmp/TimChromepid.RUN /tmp/TimChromepid.PSD
kill -SIGSTOP < /tmp/TimChromepid.PSD
else
mv /tmp/TimChromepid.PSD /tmp/TimChromepid.RUN
kill -SIGCONT < /tmp/TimChromepid.RUN
fi
它会暂停 spotify 和 Youtube 以及您在第一个 Chrome 会话中放置的任何内容。