summaryrefslogtreecommitdiff
path: root/liveJoin.js
diff options
context:
space:
mode:
Diffstat (limited to 'liveJoin.js')
-rw-r--r--liveJoin.js176
1 files changed, 0 insertions, 176 deletions
diff --git a/liveJoin.js b/liveJoin.js
deleted file mode 100644
index ed08a15..0000000
--- a/liveJoin.js
+++ /dev/null
@@ -1,176 +0,0 @@
-const puppeteer = require('puppeteer');
-const Xvfb = require('xvfb');
-var exec = require('child_process').exec;
-const fs = require('fs');
-const os = require('os');
-const homedir = os.homedir();
-const platform = os.platform();
-
-var xvfb = new Xvfb({
- silent: true,
- xvfb_args: ["-screen", "0", "1280x800x24", "-ac", "-nolisten", "tcp", "-dpi", "96", "+extension", "RANDR"]
-});
-var width = 1280;
-var height = 720;
-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',
- '--shm-size=1gb',
- '--disable-dev-shm-usage',
- `--window-size=${width},${height}`,
- ],
-}
-
-if(platform == "linux"){
- options.executablePath = "/usr/bin/google-chrome"
-}else if(platform == "darwin"){
- options.executablePath = "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
-}
-
-async function main() {
- try{
- if(platform == "linux"){
- xvfb.startSync()
- }
- var url = process.argv[2],
- exportname = process.argv[3],
- duration = process.argv[4],
- convert = process.argv[5]
-
- if(!url){ url = 'https://www.mynaparrot.com/' }
- if(!exportname){ exportname = 'live.webm' }
- //if(!duration){ duration = 10 }
- if(!convert){ convert = false }
-
- 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)
-
- await page.waitForSelector('[aria-label="Listen only"]');
- await page.click('[aria-label="Listen only"]', {waitUntil: 'domcontentloaded'});
-
- await page.waitForSelector('[id="chat-toggle-button"]');
- await page.click('[id="chat-toggle-button"]', {waitUntil: 'domcontentloaded'});
- await page.click('button[aria-label="Users and messages toggle"]', {waitUntil: 'domcontentloaded'});
- await page.$eval('[class^=navbar]', element => element.style.display = "none");
-
- await page.$eval('.Toastify', element => element.style.display = "none");
- await page.waitForSelector('button[aria-label="Leave audio"]');
- await page.$eval('[class^=actionsbar] > [class^=center]', element => element.style.display = "none");
-
- await page.evaluate((x) => {
- console.log("REC_START");
- window.postMessage({type: 'REC_START'}, '*')
- })
-
- if(duration > 0){
- await page.waitFor((duration * 1000))
- }else{
- await page.waitForSelector('[class^=modal] > [class^=content] > button[description="Logs you out of the meeting"]', {
- timeout: 0
- });
- }
-
- await page.evaluate(filename=>{
- window.postMessage({type: 'SET_EXPORT_PATH', filename: filename}, '*')
- window.postMessage({type: 'REC_STOP'}, '*')
- }, exportname)
-
- // Wait for download of webm to complete
- await page.waitForSelector('html.downloadComplete', {timeout: 0})
- await page.close()
- await browser.close()
-
- if(platform == "linux"){
- xvfb.stopSync()
- }
-
- if(convert){
- convertAndCopy(exportname)
- }else{
- copyOnly(exportname)
- }
-
- }catch(err) {
- console.log(err)
- }
-}
-
-main()
-
-function convertAndCopy(filename){
-
- var copyFromPath = homedir + "/Downloads";
- var copyToPath = "/var/www/bigbluebutton-default/record";
- var onlyfileName = filename.split(".webm")
- var mp4File = onlyfileName[0] + ".mp4"
- var copyFrom = copyFromPath + "/" + filename + ""
- var copyTo = copyToPath + "/" + mp4File;
-
- if(!fs.existsSync(copyToPath)){
- fs.mkdirSync(copyToPath);
- }
-
- console.log(copyTo);
- console.log(copyFrom);
-
- var cmd = "ffmpeg -y -i '" + copyFrom + "' -c:v libx264 -preset veryfast -movflags faststart -profile:v high -level 4.2 -max_muxing_queue_size 9999 -vf mpdecimate -vsync vfr '" + copyTo + "'";
-
- console.log("converting using: " + cmd);
-
- exec(cmd, function(err, stdout, stderr) {
-
- if (err) console.log('err:\n' + err);
- //if (stderr) console.log('stderr:\n' + stderr);
-
- if(!err){
- console.log("Now deleting " + copyFrom)
- try {
- fs.unlinkSync(copyFrom);
- console.log('successfully deleted ' + copyFrom);
- } catch (err) {
- console.log(err)
- }
- }
- });
-}
-
-function copyOnly(filename){
-
- var copyFrom = homedir + "/Downloads/" + filename;
- var copyToPath = "/var/www/bigbluebutton-default/record";
- var copyTo = copyToPath + "/" + filename;
-
- if(!fs.existsSync(copyToPath)){
- fs.mkdirSync(copyToPath);
- }
-
- try {
-
- fs.copyFileSync(copyFrom, copyTo)
- console.log('successfully copied ' + copyTo);
-
- fs.unlinkSync(copyFrom);
- console.log('successfully delete ' + copyFrom);
- } catch (err) {
- console.log(err)
- }
-}
-