summaryrefslogtreecommitdiff
path: root/index.js
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2020-04-15 16:58:12 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2020-04-15 17:00:19 +0200
commit19dd4d3890eb2f840e26e0f6eab33c72a7af7c82 (patch)
treeb8ff6720d5618ea27e00606b63696cdeb24f2bd7 /index.js
parent5a277af641a996898439ad4927041d21d78165fe (diff)
downloadbbb-recorder-19dd4d3890eb2f840e26e0f6eab33c72a7af7c82.tar.gz
bbb-recorder-19dd4d3890eb2f840e26e0f6eab33c72a7af7c82.zip
Remove live server, conversion and xvfbHEADmaster
Diffstat (limited to 'index.js')
-rw-r--r--index.js73
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()