2023-03-14 18:04:54 +01:00
|
|
|
import fs from "node-fs";
|
|
|
|
import convert from "xml-js";
|
2023-04-18 12:23:52 +02:00
|
|
|
import {writeFileInOuputFolderFromJsonObject} from "./parse_orgmode_to_json.mjs";
|
2023-03-14 18:04:54 +01:00
|
|
|
|
|
|
|
/**********************
|
|
|
|
* initialize configs
|
|
|
|
**********************/
|
|
|
|
|
|
|
|
const sourceFileName = 'sms-20180423162531.xml'
|
|
|
|
const outputFileJson = 'sms-20180423162531.json'
|
|
|
|
const sourceFileJson = 'output/' + outputFileJson
|
|
|
|
const outputFileCsv = 'sms-20180423162531.tsv'
|
|
|
|
const sourceFilePath = '/home/tykayn/Nextcloud/ressources/social sorting/' + sourceFileName;
|
|
|
|
|
|
|
|
let headers = []
|
|
|
|
let tasksObjectsForJsonExport = []
|
|
|
|
let headersByKind = {}
|
|
|
|
let writeJsonAfterParse = false;
|
|
|
|
writeJsonAfterParse = true;
|
|
|
|
|
|
|
|
/**************************************************************
|
|
|
|
* fetch the source file to read its contents
|
|
|
|
*************************************************************/
|
|
|
|
|
|
|
|
console.log('parse some org file', sourceFilePath)
|
|
|
|
if (!sourceFilePath) {
|
|
|
|
console.error('pas de fichier à ouvrir')
|
|
|
|
}
|
|
|
|
|
|
|
|
function convertToCsv(elementsArray) {
|
|
|
|
elementsArray.forEach(item => {
|
|
|
|
console.log('item._attributes.date_sent', item._attributes.date_sent)
|
|
|
|
console.log('item._attributes.contact_name', item._attributes.date_sent)
|
|
|
|
console.log('item._attributes.body', item._attributes.date_sent)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function convertJsonToCsv(sourceFilePath, outputFileName) {
|
|
|
|
fs.readFile(sourceFilePath, 'utf8', function (err, data) {
|
|
|
|
|
|
|
|
const events = [
|
|
|
|
|
|
|
|
'amount\t' +
|
|
|
|
'content\t' +
|
|
|
|
'description\t' +
|
|
|
|
'destination\t' +
|
|
|
|
'end\t' +
|
|
|
|
'kind of activity\t' +
|
|
|
|
'person\t' +
|
|
|
|
'place\t' +
|
|
|
|
'source\t' +
|
|
|
|
'start\t' +
|
|
|
|
'unique id\t' +
|
|
|
|
'url\t'
|
|
|
|
];
|
|
|
|
data = JSON.parse(data)
|
|
|
|
console.log('data', data)
|
|
|
|
// console.log('data', Object.keys(data[0]))
|
|
|
|
data['smses']['sms'].forEach(item => {
|
|
|
|
|
|
|
|
// convert all fields to common event description
|
|
|
|
events.push(
|
|
|
|
'\t' +
|
|
|
|
item._attributes.body.replace('\n', ' ') + '\t' +
|
|
|
|
'sms ' + item._attributes.address + ' le ' + item._attributes.readable_date + '\t' +
|
|
|
|
item._attributes.address + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
item._attributes.contact_name + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
'' + '\t'
|
|
|
|
)
|
|
|
|
})
|
|
|
|
console.log('events', events)
|
2023-04-18 12:23:52 +02:00
|
|
|
writeFileInOuputFolderFromJsonObject(outputFileName, events.join("\n"))
|
2023-03-14 18:04:54 +01:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function openSourceFile() {
|
|
|
|
|
|
|
|
fs.stat(sourceFilePath, function (err, data) {
|
|
|
|
if (err == null) {
|
|
|
|
console.log(`File ${sourceFilePath} exists`);
|
|
|
|
|
|
|
|
/**********************
|
|
|
|
* loop to parse all
|
|
|
|
*********************/
|
|
|
|
fs.readFile(sourceFilePath, 'utf8', function (err, data) {
|
|
|
|
// console.log('data', data)
|
|
|
|
var jsonConversion = convert.xml2json(data, {compact: true, spaces: 2});
|
|
|
|
// console.log('smses', Object.keys(jsonConversion))
|
|
|
|
console.log('jsonConversion[0]', jsonConversion['10'])
|
|
|
|
|
2023-04-18 12:23:52 +02:00
|
|
|
writeFileInOuputFolderFromJsonObject(outputFileJson, jsonConversion)
|
2023-03-14 18:04:54 +01:00
|
|
|
convertJsonToCsv(sourceFileJson, outputFileCsv)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
} else if (err.code === 'ENOENT') {
|
|
|
|
// file does not exist
|
|
|
|
console.error(`le fichier ${sourceFilePath} est introuvable. Impossible d en extraire des infos.`, err);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
console.log('Some other error: ', err.code);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// openSourceFile()
|
|
|
|
|
|
|
|
function convertJsonToCsv(sourceFilePath, outputFileName) {
|
|
|
|
fs.readFile(sourceFilePath, 'utf8', function (err, data) {
|
|
|
|
|
|
|
|
const events = [
|
|
|
|
|
|
|
|
'amount\t' +
|
|
|
|
'content\t' +
|
|
|
|
'description\t' +
|
|
|
|
'destination\t' +
|
|
|
|
'end\t' +
|
|
|
|
'kind of activity\t' +
|
|
|
|
'person\t' +
|
|
|
|
'place\t' +
|
|
|
|
'source\t' +
|
|
|
|
'start\t' +
|
|
|
|
'unique id\t' +
|
|
|
|
'url\t'
|
|
|
|
];
|
|
|
|
data = JSON.parse(data)
|
|
|
|
console.log('data', data)
|
|
|
|
// console.log('data', Object.keys(data[0]))
|
|
|
|
data['smses']['sms'].forEach(item => {
|
|
|
|
|
|
|
|
// convert all fields to common event description
|
|
|
|
events.push(
|
|
|
|
'\t' +
|
|
|
|
item._attributes.body.replace('\n', ' ') + '\t' +
|
|
|
|
'sms ' + item._attributes.address + ' le '+item._attributes.readable_date+'\t' +
|
|
|
|
item._attributes.address + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
item._attributes.contact_name + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
'' + '\t' +
|
|
|
|
'' + '\t'
|
|
|
|
)
|
|
|
|
})
|
|
|
|
console.log('events', events)
|
2023-04-18 12:23:52 +02:00
|
|
|
writeFileInOuputFolderFromJsonObject(outputFileName, events.join("\n"))
|
2023-03-14 18:04:54 +01:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|