JavaScript在YouTube上选择视频质量

JavaScript在YouTube上选择视频质量,javascript,youtube,sirishortcuts,Javascript,Youtube,Sirishortcuts,我正试图在iOS上设置一个Siri快捷方式,使播放YouTube视频到苹果电视变得容易。作为这个过程的一部分,我想选择视频的质量(大概是使用Javascript),但我很难做到这一点。(). 它成功地使用JavaScript暂停视频,将视频回放到YouTube自动播放后的开头,然后使用AirPlay连接到Apple TV,等待电视打开,然后单击视频将其取消静音。然而,我试图设置视频质量的一切都没有起作用,我正在这里拼命工作。有人知道这是否可能吗?它是可以设置的视频参数吗?或者我可以使用JavaS

我正试图在iOS上设置一个Siri快捷方式,使播放YouTube视频到苹果电视变得容易。作为这个过程的一部分,我想选择视频的质量(大概是使用Javascript),但我很难做到这一点。(). 它成功地使用JavaScript暂停视频,将视频回放到YouTube自动播放后的开头,然后使用AirPlay连接到Apple TV,等待电视打开,然后单击视频将其取消静音。然而,我试图设置视频质量的一切都没有起作用,我正在这里拼命工作。有人知道这是否可能吗?它是可以设置的视频参数吗?或者我可以使用JavaScript单击设置按钮并选择质量?我的Javascript非常弱,因此任何为我指明正确方向的帮助都将不胜感激

以下是我目前掌握的Javascript:

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()'