import fs from "node-fs"; import convert from "xml-js"; import {writeFileInOuputFolder} from "./parse_orgmode_to_json.mjs"; /********************** * 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) writeFileInOuputFolder(outputFileName, events.join("\n")) }) } 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']) writeFileInOuputFolder(outputFileJson, jsonConversion) 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) writeFileInOuputFolder(outputFileName, events.join("\n")) }) }