Я пишу скрипт для загрузки нескольких видео, чтобы я мог смотреть их в автономном режиме.Мой подход заключается в использовании 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()
и если на странице есть кнопка для загрузки файла.Но если такой кнопки для загрузки файла нет, я пытаюсь загрузить файл.