diff --git a/index.js b/index.js index 70328ad..c3c0485 100644 --- a/index.js +++ b/index.js @@ -9,7 +9,8 @@ const { GoogleSpreadsheet } = require("google-spreadsheet"); const creds = require("./config/zoom-recording-tracker-6a8bd724ca99.json"); /* DIRTY REGEX FOR PULLING THE URL AND PASSWORD */ -const regex = /(?<=share this recording with viewers\:\n)(.*)|(?<=Passcode\:\n)(.*)/g; +//const regex = /(?<=share this recording with viewers\:\n[<]a href=["])(.*)|(?<=Passcode\:\n)(.*)/g; +const regex = /share this recording with viewers((.|\n)*)">((.|\n)*)(<\/a>)((.|\n)*)Passcode: (.*)/g; /* ----------------------------- */ // readXML.loadDoc(); @@ -45,16 +46,27 @@ mailListener.on("error", function (err) { mailListener.on("mail", async function (mail, seqno, attributes) { let newMessage = ""; if (mail.from[0].address == conf.email && mail.subject == conf.catchSubject) { - let parsedMessage = mail.text.match(regex); - if (parsedMessage && parsedMessage.length === 2){ + console.log("mail:", mail) + mail.html = mail.html.replace(//g, '') + console.log("***mail.html with linebreaks replaced***", mail.html) + // matchAll gives you regex groups, and then we convert to array:q + let parsedMessage = mail.html.matchAll(regex); + console.log("parsed message:", JSON.stringify(parsedMessage)) + parsedMessage = [...parsedMessage]; // convert to array + console.log("parsed message array:", parsedMessage) + if (parsedMessage && parsedMessage[0].length > 8){ try { let sheet = await sheetsConnect(); - await updateRow(sheet, parsedMessage); + let password = parsedMessage[0][8]; + let url = parsedMessage[0][3]; + await updateRow(sheet, password, url); } catch (err) { console.log(err); } - } + } else { + console.log("FAILED TO MATCH REGEX") + } } }); @@ -63,7 +75,7 @@ mailListener.on("mail", async function (mail, seqno, attributes) { start = header column position (i.e. "URL" ) */ function firstEmptyRow(sheet) { - for (let i = sheetParams.headerRow; i < sheet.gridProperties.rowCount; i++) { + for (let i = 5; i < sheet.gridProperties.rowCount; i++) { let thisCell = sheet.getCell(i, sheetParams.urlCol); if (thisCell.value === null) { return i; @@ -73,14 +85,14 @@ function firstEmptyRow(sheet) { /* using first empty row, populate with values passed from imap checker */ -async function updateRow(sheet, parsedMessage, topic="UPDATE TOPIC") { +async function updateRow(sheet, password, url, topic="UPDATE TOPIC") { try { await sheet.loadCells("A:D"); let newRow = firstEmptyRow(sheet); sheet.getCell(newRow, sheetParams.dateCol).value = new Date().getDateForHTML(); - sheet.getCell(newRow, 1).value = require('./topic.json').TOPIC; - sheet.getCell(newRow, sheetParams.passCol).value = parsedMessage[1]; - sheet.getCell(newRow, sheetParams.urlCol).value = parsedMessage[0]; + sheet.getCell(newRow, 1).value = require('./config/topic.json').TOPIC; + sheet.getCell(newRow, sheetParams.passCol).value = password; + sheet.getCell(newRow, sheetParams.urlCol).value = url; sheet.saveUpdatedCells(); } catch (err) { console.log(err); @@ -98,8 +110,8 @@ async function sheetsConnect() { } } Date.prototype.getDateForHTML = function () { - return `${this.getUTCFullYear()}/${(this.getUTCMonth() + 1) + return `${this.toLocaleString('en-us', {weekday: 'long' })}, ${this.getUTCFullYear()}/${(this.getUTCMonth() + 1) .toString() - .padStart(2, "0")}/${this.getUTCDate().toString().padStart(2, "0")}`; + .padStart(2, "0")}/${this.getDate().toString().padStart(2, "0")}`; }; diff --git a/topic.json b/topic.json deleted file mode 100644 index 3a05d50..0000000 --- a/topic.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "TOPIC": "This Lectures Topic" -} \ No newline at end of file