Created
September 11, 2022 17:21
-
-
Save DerexScript/0398d9b8b22283e47444bf950668e805 to your computer and use it in GitHub Desktop.
kpmToKeePassXC
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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`; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment