const readLine = require('readline'); const fs = require('fs'); const regexWN = new RegExp('Website name:\\s([^\n]+)', ''); const regexWU = /Website URL: ([^\n]+)/; const regexLN = /Login name: ([^\n]+)/; const regexL = /Login: ([^\n]+)/; const regexPW = /^Password: ([^\n]+)/; const regexC = /Comment:/; const file = './kpm.txt'; const rl = readLine.createInterface({ input: fs.createReadStream(file), output: process.stdout, terminal: false }); let websiteNames = []; let websiteURLS = []; let websiteLoginNames = []; let websiteLogins = []; let websiteNamePWS = []; let websiteNameComments = []; let wn, wu, ln, l, pw, c = ''; let isComment = false; let commentstr = ""; rl.on('line', function (text) { if (/Website name:/.test(text)) { wn = regexWN.exec(text); websiteNames.push(wn[1].trim()); } if (/Website URL:/.test(text)) { wu = regexWU.exec(text); websiteURLS.push(wu[1].trim()); } if (/Login name:/.test(text)) { if (/Login name:\s[^\n]+/.test(text)) { ln = regexLN.exec(text); websiteLoginNames.push(ln[1].trim()); } else { websiteLoginNames.push(""); } } if (/Login:/.test(text)) { l = regexL.exec(text); websiteLogins.push(l[1].trim()); } if (/^Password:/.test(text) && isComment == false) { if (/^Password:\s[^\n]+/.test(text)) { pw = regexPW.exec(text); websiteNamePWS.push(pw[1].trim()); } else { websiteNamePWS.push(""); } } if (isComment) { if (text == '---') { websiteNameComments.push(commentstr.replace(/"|,/gm, "").trim()); commentstr = ""; isComment = false; } else { commentstr += text + "\\n"; } } if (regexC.test(text)) { if (/Comment:\s[^\n]+/.test(text)) { c = /Comment:\s([^\n]+)/.exec(text); commentstr = c[1]; isComment = true; } else { websiteNameComments.push(""); } } }); rl.on('close', () => { console.log(websiteNames.length); console.log(websiteURLS.length); console.log(websiteLoginNames.length); console.log(websiteLogins.length); console.log(websiteNamePWS.length); console.log(websiteNameComments.length); let strCSV = ``; websiteNames.forEach((websiteName, i) => { strCSV += `"Raiz","${websiteName.trim()}","${websiteLogins[i].trim()}","${websiteNamePWS[i].trim()}","${websiteURLS[i].trim()}","${websiteNameComments[i].trim()}","","0","${getDateTime()}","${getDateTime()}"\n`; }); fs.writeFileSync('./dad.csv', strCSV, (err) => { if (err) { // Do something to handle the error or just throw it console.log(err); throw new Error(err); } console.log('Data stored into csv file successfully'); }); }); function getDateTime() { const date = new Date(); const year = date.getUTCFullYear().toString(); const month = date.getUTCMonth().toString().padStart(2, 0); const day = date.getUTCDate().toString().padStart(2, 0); const hour = date.getUTCHours().toString().padStart(2, 0); const minutes = date.getUTCMinutes().toString().padStart(2, 0); const seconds = date.getUTCSeconds().toString().padStart(2, 0); return `${year}-${month}-${day}T${hour}:${minutes}:${seconds}Z`; }