diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2020-04-15 16:58:12 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2020-04-15 17:00:19 +0200 |
| commit | 19dd4d3890eb2f840e26e0f6eab33c72a7af7c82 (patch) | |
| tree | b8ff6720d5618ea27e00606b63696cdeb24f2bd7 /index.js | |
| parent | 5a277af641a996898439ad4927041d21d78165fe (diff) | |
| download | bbb-recorder-master.tar.gz bbb-recorder-master.zip | |
Diffstat (limited to 'index.js')
| -rw-r--r-- | index.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/index.js b/index.js new file mode 100644 index 0000000..4e69ece --- /dev/null +++ b/index.js @@ -0,0 +1,73 @@ +const puppeteer = require('puppeteer'); + +var options = { + headless: false, + args: [ + '--enable-usermedia-screen-capturing', + '--allow-http-screen-capture', + '--auto-select-desktop-capture-source=bbbrecorder', + '--load-extension=' + __dirname, + '--disable-extensions-except=' + __dirname, + '--disable-infobars', + '--no-sandbox', + `--window-size=1280,900`, // 1280x720 + infobars + ], +} + +async function main() { + try { + var url = process.argv[2], + filename = process.argv[3] + + if (!filename) { filename = 'export.webm' } + + const browser = await puppeteer.launch(options) + const pages = await browser.pages() + + const page = pages[0] + + page.on('console', msg => { + var m = msg.text(); + console.log('PAGE LOG:', m) + }); + + await page._client.send('Emulation.clearDeviceMetricsOverride') + await page.goto(url, {waitUntil: 'networkidle2'}) + await page.setBypassCSP(true) + + // wait until play button is loaded + await page.waitForSelector('button[class=acorn-play-button]'); + await page.$eval('#navbar', element => element.style.display = 'none'); + await page.$eval('#copyright', element => element.style.display = 'none'); + await page.click('video[id=video]', { waitUntil: 'domcontentloaded' }); + await page.$eval('#main-section', element => { + element.style.height = '100vh'; + element.style.width = '100vw'; + element.style.padding = '0'; + element.style['z-index'] = '999'; + }); + + + await page.evaluate((x) => { + window.postMessage({type: 'REC_START'}, '*') + }) + + await page.waitFor(10000); + // Wait until play button becomes pause button + await page.waitForSelector('button.acorn-paused-button', { hidden: true, timeout: 0 }); + + await page.evaluate(filename => { + window.postMessage({type: 'SET_EXPORT_PATH', filename}, '*') + window.postMessage({type: 'REC_STOP'}, '*') + }, filename) + + // Wait for download of webm to complete + await page.waitForSelector('html.downloadComplete', { timeout: 0 }) + await page.close() + await browser.close() + } catch(err) { + console.log(err) + } +} + +main() |
