Skip to content

Instantly share code, notes, and snippets.

@DerexScript
Created September 11, 2022 17:21
Show Gist options
  • Save DerexScript/0398d9b8b22283e47444bf950668e805 to your computer and use it in GitHub Desktop.
Save DerexScript/0398d9b8b22283e47444bf950668e805 to your computer and use it in GitHub Desktop.
kpmToKeePassXC
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