Как скачать видео .webm с кукловодом? - PullRequest
0 голосов
/ 26 декабря 2018

Я пишу скрипт для загрузки нескольких видео, чтобы я мог смотреть их в автономном режиме.Мой подход заключается в использовании puppeteer для очистки страницы и загрузки видео, но я не могу понять, как загрузить видео с кукловодом.Если я сделаю это вручную в Chrome, я могу просто щелкнуть правой кнопкой мыши на видео и нажать «Сохранить как видео».Но я не понимаю, как я могу создать такой запрос у кукловода.

Вот пример того, какой тип видео я бы хотел скачать: https://frontendmasters.com/courses/mongodb/

Что я сейчас делаю, так это сначала получу источник видео с:

document.querySelector('video').src

Тогда я перехожу на этот src, а потом я застреваю :).Я пытался эмулировать щелчок правой кнопкой мыши и сохранить как, но это не работает.Я предполагаю, что кукловод только щелкает внутри страницы, и всплывающий щелчок правой кнопкой мыши является частью браузера, а не страницы, поэтому щелчок не работает.Вот мой код:

const puppeteer = require('puppeteer');

puppeteer.launch({
  headless: false,
  defaultViewport: {
    width: 1280, height: 800
  },
  devtools: false
})
.then(async browser => {
  try {
    const page = await browser.newPage();
    await page.setViewport({ width: 1280, height: 800 })

    const url 
    await page.goto(url)
    // Setting Download Location
    const currentDirPath = process.cwd();
    await page._client.send('Page.setDownloadBehavior', {
      behavior: 'allow',
      downloadPath: `${currentDirPath}/Downloads`
    });

    // make sure URL is on page
    await page.waitFor('video');
    // move mouse over video
    await page.mouse.move(200, 200)
    // right click on video
    await page.mouse.down({button: 'right'})

    // offset to end up on save as button
    const offsetX = 139
    const offsetY = 82

    await page.waitFor(5000)
    await page.mouse.move(200 + offsetX, 200 + offsetY)
    await page.mouse.down({button: 'left'})

  } catch (e) {
    console.warn(e)
  }
})

Знаете ли вы, как я могу эмулировать этот запрос «сохранить как» в браузере или любой другой способ загрузки такого файла с кукловода?Мне удается загружать файлы с кукловода, когда установлен page._clien.send() и если на странице есть кнопка для загрузки файла.Но если такой кнопки для загрузки файла нет, я пытаюсь загрузить файл.

...