JavaScript在YouTube上选择视频质量
我正试图在iOS上设置一个Siri快捷方式,使播放YouTube视频到苹果电视变得容易。作为这个过程的一部分,我想选择视频的质量(大概是使用Javascript),但我很难做到这一点。(). 它成功地使用JavaScript暂停视频,将视频回放到YouTube自动播放后的开头,然后使用AirPlay连接到Apple TV,等待电视打开,然后单击视频将其取消静音。然而,我试图设置视频质量的一切都没有起作用,我正在这里拼命工作。有人知道这是否可能吗?它是可以设置的视频参数吗?或者我可以使用JavaScript单击设置按钮并选择质量?我的Javascript非常弱,因此任何为我指明正确方向的帮助都将不胜感激 以下是我目前掌握的Javascript:JavaScript在YouTube上选择视频质量,javascript,youtube,sirishortcuts,Javascript,Youtube,Sirishortcuts,我正试图在iOS上设置一个Siri快捷方式,使播放YouTube视频到苹果电视变得容易。作为这个过程的一部分,我想选择视频的质量(大概是使用Javascript),但我很难做到这一点。(). 它成功地使用JavaScript暂停视频,将视频回放到YouTube自动播放后的开头,然后使用AirPlay连接到Apple TV,等待电视打开,然后单击视频将其取消静音。然而,我试图设置视频质量的一切都没有起作用,我正在这里拼命工作。有人知道这是否可能吗?它是可以设置的视频参数吗?或者我可以使用JavaS
ytplayer = document.querySelector('video');
ytplayer.pause();
ytplayer.currentTime = 0;
ytplayer.click();
ytplayer.play();
completion();
您需要使用木偶演员: 这是一个您可以使用的示例: `
const puppeter=require('puppeter')
异步函数start(){
const site1=”https://ampdemo.azureedge.net/azuremediaplayer.html?url=%2F%2Famssamples.streaming.mediaservices.windows.net%2F49b57c87-f5f3-48b3-ba22-C55CFDFA9CB%2FSintel.ism%2fsmanifest&muted=true&aes=true”
常数标签号=4
const time_interval=30*1000//以毫秒为单位,两个连续选项卡打开之间的时间
const vid_length=5*60*1000//以毫秒为单位
const path_chromium76='/usr/bin/chromium browser'//最新安装,版本76.0.3809.100(官方版本),构建于Ubuntu上,运行于LinuxMint 18.1上
常量启动参数={
无头:错,
可执行路径:路径\u chromium76,
devtools:false,
超时:0,
}
常量选择器1=“#azuremediaplayer>div>div.vjs-control-bar>div.amp-controlbaricons-right>div.amp-quality-control.vjs-menu-button.vjs-menu-button-popup.vjs-control.vjs-button.outline-enabled-control.quality-4>div>ul>li:n子级(3)”
常量选择器2='li[aria label=“816p-6Mbps”]
const selector3=“li[aria label='816p-6Mbps']”
const selector4=“li.vjs菜单项.amp菜单项[aria label='816p-6Mbps']”
const selector5=“li.vjs菜单项.amp菜单项”
常量选择器10='li.vjs菜单项.amp菜单项'
常数选择=选择器3
const browser=wait puppeter.launch(启动参数)
//const version=await browser.version()//chrome/77.0.3844.0(随Puppeter提供)
const incognito_context=wait browser.createIncognitoBrowserContext()
对于(i=0;i{
const el=document.querySelector(sel)
el.style.color='红色'
el.单击()
//返回el
},sel)
//在转到下一个选项卡之前等待(即继续进行for循环)
等待页面。等待(时间间隔)
//------------工作
setTimeout(()=>page.close(),vid_length)
//----------*/
如果(i==tabs_no-1){
setTimeout(()=>browser.close(),vid_length+3000)
//setTimeout(()=>incognito_context.close(),vid_length+3000)
}
}//选项卡的for循环结束
}
异步函数main(){
常数=2
对于(b=0;b您需要使用木偶演员:
这是一个您可以使用的示例:
`
const puppeter=require('puppeter')
异步函数start(){
const site1=”https://ampdemo.azureedge.net/azuremediaplayer.html?url=%2F%2Famssamples.streaming.mediaservices.windows.net%2F49b57c87-f5f3-48b3-ba22-C55CFDFA9CB%2FSintel.ism%2fsmanifest&muted=true&aes=true”
常数标签号=4
const time_interval=30*1000//以毫秒为单位,两个连续选项卡打开之间的时间
const vid_length=5*60*1000//以毫秒为单位
const path_chromium76='/usr/bin/chromium browser'//最新安装,版本76.0.3809.100(官方版本),构建于Ubuntu上,运行于LinuxMint 18.1上
常量启动参数={
无头:错,
可执行路径:路径\u chromium76,
devtools:false,
超时:0,
}
常量选择器1=“#azuremediaplayer>div>div.vjs-control-bar>div.amp-controlbaricons-right>div.amp-quality-control.vjs-menu-button.vjs-menu-button-popup.vjs-control.vjs-button.outline-enabled-control.quality-4>div>ul>li:n子级(3)”
常量选择器2='li[aria label=“816p-6Mbps”]
const selector3=“li[aria label='816p-6Mbps']”
const selector4=“li.vjs菜单项.amp菜单项[aria label='816p-6Mbps']”
const selector5=“li.vjs菜单项.amp菜单项”
常量选择器10='li.vjs菜单项.amp菜单项'
常数选择=选择器3
const browser=wait puppeter.launch(启动参数)
//const version=await browser.version()//chrome/77.0.3844.0(随Puppeter提供)
const incognito_context=wait browser.createIncognitoBrowserContext()
对于(i=0;i{
const el=document.querySelector(sel)
el.style.color='红色'
el.单击()
//返回el
},sel)
//在转到下一个选项卡之前等待(即继续进行for循环)
等待页面。等待(时间间隔)
//------------工作
setTimeout(()=>page.close(),vid_length)
//----------*/
如果(i==tabs_no-1){
setTimeout(()=>browser.close(),vid_length+3000)
//setTimeout(()=>incognito_context.close(),vid_length+3000)
}
}//选项卡的for循环结束
}
异步函数main(){
常数=2
对于(b=0;b
const puppeteer = require('puppeteer')
async function start() {
const site1 = "https://ampdemo.azureedge.net/azuremediaplayer.html?url=%2F%2Famssamples.streaming.mediaservices.windows.net%2F49b57c87-f5f3-48b3-ba22-c55cfdffa9cb%2FSintel.ism%2Fmanifest&muted=true&aes=true"
const tabs_no = 4
const time_interval = 30 * 1000 // in ms, time between 2 consequetive tabs opening
const vid_length = 5 * 60 * 1000 // in ms
const path_chromium76 = '/usr/bin/chromium-browser' // recent install, v. 76.0.3809.100 (official Build) Built on Ubuntu, running on LinuxMint 18.1
const launch_args = {
headless:false,
executablePath:path_chromium76,
devtools:false,
timeout: 0,
}
const selector1 = "#azuremediaplayer > div > div.vjs-control-bar > div.amp-controlbaricons-right > div.amp-quality-control.vjs-menu-button.vjs-menu-button-popup.vjs-control.vjs-button.outline-enabled-control.quality-4 > div > ul > li:nth-child(3)"
const selector2 = 'li[aria-label="816p-6Mbps"]'
const selector3 = "li[aria-label='816p-6Mbps']"
const selector4 = "li.vjs-menu-item.amp-menu-item[aria-label='816p-6Mbps']"
const selector5 = "li.vjs-menu-item.amp-menu-item"
const selector10 = 'li.vjs-menu-item.amp-menu-item'
const sel = selector3
const browser = await puppeteer.launch(launch_args)
// const version = await browser.version() // chrome/77.0.3844.0 (shipped with puppeteer)
const incognito_context = await browser.createIncognitoBrowserContext()
for (i=0; i<tabs_no; i++) {
let page = await incognito_context.newPage()
await page.goto(site1)
await page.waitFor(3000)
page.evaluate((sel) => {
const el = document.querySelector(sel)
el.style.color = 'red'
el.click()
//return el
}, sel)
// Wait before going to the next tab (i.e. for continuing with the for loop)
await page.waitFor(time_interval)
//------------WORKS
setTimeout( ()=> page.close(),vid_length)
//----------*/
if (i == tabs_no-1) {
setTimeout( ()=> browser.close(), vid_length+3000)
//setTimeout( ()=> incognito_context.close(), vid_length+3000)
}
} // End of for loop for tabs
}
async function main() {
const browsers_no = 2
for (b=0; b<browsers_no; b++) {
setTimeout( start, 1000)
}
}
main()'