Len*_*non 2 javascript youtube sirishortcuts
我正在尝试在 iOS 上设置 Siri 快捷方式,以便轻松地将 YouTube 视频隔空播放到 Apple TV。作为该过程的一部分,我想选择视频的质量(大概使用 JavaScript),但我在实现这一点时遇到了困难。这是我到目前为止所得到的(可在桌面/非 iOS 设备上查看的 imgur 链接)。它成功地使用 JavaScript 暂停视频,自 YouTube 自动播放以来将其倒回到开头,然后通过 AirPlay 连接到 Apple TV,等待电视打开,然后单击视频将其取消静音。然而,我尝试设置视频质量的所有方法都不起作用,我在这里抓狂了。有人知道这是否可能吗?是不是视频的参数可以设置?或者我可以使用 JavaScript 单击设置按钮并选择质量吗?我的 Javascript 非常弱,所以任何帮助我指明正确方向的帮助都将非常感激。
这是我到目前为止得到的 Javascript:
ytplayer = document.querySelector('video');
ytplayer.pause();
ytplayer.currentTime = 0;
ytplayer.click();
ytplayer.play();
completion();
Run Code Online (Sandbox Code Playgroud)
我不确定 Apple TV 上的 Siri 快捷方式如何工作,因此这可能不适用,但如果它的布局与计算机浏览器类似,则此代码适用于我单击设置按钮并在网络浏览器中选择分辨率
let sleep = ms => new Promise(r => setTimeout(r, ms));
async function waitForVideo() {
let video = document.querySelector('video');
while (!video) {
console.log('waiting for video');
await sleep(200);
video = document.querySelector('video');
}
}
/**
* Sets the quality
* options are: "Highest" and the options available in the menu ("720p", "480p", etc.)
*/
async function setQuality(quality) {
await waitForVideo();
await sleep(1000);
let settingsButton = document.getElementsByClassName('ytp-settings-button')[0];
settingsButton.click();
await sleep(500);
let qualityMenu = document.getElementsByClassName('ytp-panel-menu')[0].lastChild;
qualityMenu.click();
await sleep(500);
let qualityOptions = [...document.getElementsByClassName('ytp-menuitem')];
let selection;
if (quality === 'Highest') selection = qualityOptions[0];
else selection = qualityOptions.filter((el) => el.innerText == quality)[0];
if (!selection) {
let qualityTexts = qualityOptions.map((el) => el.innerText).join('\n');
console.log('"' + quality + '" not found. Options are: \n\nmax\nmin\n' + qualityTexts);
settingsButton.click(); // click menu button to close
return;
}
selection.click();
}
setQuality('Highest');
Run Code Online (Sandbox Code Playgroud)