From 48420bb7fe300b509d4a9d41f9d5438a48b2a766 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Tue, 18 Apr 2023 21:59:16 +0200 Subject: [PATCH] base parser from json to tsv added --- base_convert_to_activities_tsv.mjs | 64 +++++++++++++++++++ json_orgmode_sort_by_dates.mjs | 25 -------- ...rgmode_sort_by_dates_to_activities_tsv.mjs | 64 +++++++++++++++++++ parse_orgmode_to_json.mjs | 24 +++++-- utils.mjs | 23 ++++++- 5 files changed, 167 insertions(+), 33 deletions(-) create mode 100644 base_convert_to_activities_tsv.mjs delete mode 100644 json_orgmode_sort_by_dates.mjs create mode 100644 json_orgmode_sort_by_dates_to_activities_tsv.mjs diff --git a/base_convert_to_activities_tsv.mjs b/base_convert_to_activities_tsv.mjs new file mode 100644 index 0000000..46408a2 --- /dev/null +++ b/base_convert_to_activities_tsv.mjs @@ -0,0 +1,64 @@ +import fs from "node-fs"; +import {headersTsv, writeFileInOuputFolderFromJsonObject} from "./utils.mjs"; + + +/** + convertir un json représentant toutes les tâches orgmode en un json rangé par dates + **/ +const sourceFileName = 'export_all_tasks.org_parsed' +const outputAbsolutePath = '/home/tykayn/Nextcloud/ressources/social sorting/output/'; +const outputFileNameJson = sourceFileName + '.json'; + +const sourceFilePath = "/home/tykayn/Nextcloud/ressources/social sorting/" + outputFileNameJson +const outputFileName = sourceFileName + '.tsv'; + +const events = [headersTsv]; +let counter = 0; +let max_count = 10000 + +function parseJsonFile() { + + fs.readFile(outputAbsolutePath + outputFileNameJson, 'utf8', function (err, data) { + + + if (err) { + return console.log(err); + } + const json_content = JSON.parse(data); + console.log(outputAbsolutePath + outputFileNameJson, json_content.tasks_list.length) + + + // do parse json content and add to tsv lines + data.forEach(item => { + + if (counter < max_count) { + counter++; + console.log('item', item) + + // TODO ajust lines + let newLine = + // item.visit_count + '\t' + + // item.title + '\t' + + // item.description + '\t' + + // item.preview_image_url + '\t' + + '' + '\t' + + // 'firefox_place' + '\t' + + '' + '\t' + + '' + '\t' + + // mydate + '\t' + + '' + '\t' + + '' + '\t' + url + '\t' + + '' + // console.log('mydate',stamp, mydate) + events.push(newLine) + } + }) + + console.log('events', events.length) + writeFileInOuputFolderFromJsonObject(outputFileName, events.join("\n")).then(r => console.log('r', r)) + + }) +} + +parseJsonFile() diff --git a/json_orgmode_sort_by_dates.mjs b/json_orgmode_sort_by_dates.mjs deleted file mode 100644 index 8cf7552..0000000 --- a/json_orgmode_sort_by_dates.mjs +++ /dev/null @@ -1,25 +0,0 @@ -import fs from "node-fs"; - -/** - convertir un json représentant toutes les tâches orgmode en un json rangé par dates - **/ -const sourceFileName = 'all_tasks.org' -const sourceFilePath = './sources/' + sourceFileName; -const outputAbsolutePath = '/home/tykayn/Nextcloud/ressources/social sorting/output/'; -const outputFileNameJson = 'export_' + sourceFileName + '_parsed.json'; - -function openJsonFile(){ - - fs.readFile(outputAbsolutePath+outputFileNameJson, 'utf8', function (err, data) { - - - if (err) { - return console.log(err); - } - const json_content = JSON.parse(data); - - console.log(outputAbsolutePath+outputFileNameJson, json_content.tasks_list.length) - }) -} - -openJsonFile() diff --git a/json_orgmode_sort_by_dates_to_activities_tsv.mjs b/json_orgmode_sort_by_dates_to_activities_tsv.mjs new file mode 100644 index 0000000..c504854 --- /dev/null +++ b/json_orgmode_sort_by_dates_to_activities_tsv.mjs @@ -0,0 +1,64 @@ +import fs from "node-fs"; +import {headersTsv, writeFileInOuputFolderFromJsonObject} from "./utils.mjs"; + + +/** + convertir un json représentant toutes les tâches orgmode en un json rangé par dates + **/ +const sourceFileName = 'export_all_tasks.org_parsed' +const outputAbsolutePath = '/home/tykayn/Nextcloud/ressources/social sorting/output/'; +const outputFileNameJson = sourceFileName + '.json'; + +const sourceFilePath = "/home/tykayn/Nextcloud/ressources/social sorting/" + outputFileNameJson +const outputFileName = sourceFileName + '.tsv'; + +const events = [headersTsv]; +let counter = 0; +let max_count = 10000 + +function parseJsonFile() { + + fs.readFile(outputAbsolutePath + outputFileNameJson, 'utf8', function (err, data) { + + + if (err) { + return console.log(err); + } + const json_content = JSON.parse(data); + console.log(outputAbsolutePath + outputFileNameJson, json_content.tasks_list.length) + + + // do parse json content and add to tsv lines + data.forEach(item => { + + if (counter < max_count) { + counter++; + console.log('item', item) + + // TODO ajust lines + let newLine = + // item.visit_count + '\t' + + // item.title + '\t' + + // item.description + '\t' + + // item.preview_image_url + '\t' + + '' + '\t' + + // 'firefox_place' + '\t' + + '' + '\t' + + '' + '\t' + + // mydate + '\t' + + '' + '\t' + + '' + '\t' + url + '\t' + + '' + // console.log('mydate',stamp, mydate) + events.push(newLine) + } + }) + + console.log('events', events.length) + // writeFileInOuputFolderFromJsonObject(outputFileName, events.join("\n")).then(r => console.log('r', r)) + + }) +} + +parseJsonFile() diff --git a/parse_orgmode_to_json.mjs b/parse_orgmode_to_json.mjs index 6f187ee..5a924ab 100644 --- a/parse_orgmode_to_json.mjs +++ b/parse_orgmode_to_json.mjs @@ -80,7 +80,16 @@ let task = { tags: [], children: [], // TODO list children tasks with a reference to the parent when level is superior to previous task tagsInherited: [], // TODO inherit tags - dates: {}, + dates: { + havingDate: 0, + havingNoDate: 0, + oldEst: 0, + mostRecent: 0, + years: {}, + weeks: {}, + months: {}, + days: {}, + }, logbook: {}, properties: {}, } @@ -109,7 +118,6 @@ function addAndRefreshCurrentTask() { } function makeWordsStatistics(sentence) { - console.log('sentence', sentence) let split = sentence.split(' '); if (split && split.length) { @@ -129,6 +137,7 @@ const dateStats = { cancelled: 0, scheduled: 0, deadline: 0, + tasks_done: [] } function fillPeriodTime(periodStat, keyword){ @@ -158,7 +167,7 @@ function fillPeriodTime(periodStat, keyword){ * @param keyword * @param dateFoundElement */ -function statisticDateFill(keyword, dateFoundElement) { +function statisticDateFill(keyword, dateFoundElement, header) { // décompte par années @@ -183,6 +192,7 @@ function statisticDateFill(keyword, dateFoundElement) { statistics.dates.weeks[weekOfDate] = Object.create(dateStats) } fillPeriodTime(statistics.dates.weeks[weekOfDate], keyword) + statistics.dates.weeks[weekOfDate].tasks_done.push(header) // décompte par mois if (!statistics.dates.months[monthOfDate]) { statistics.dates.months[monthOfDate] = Object.create(dateStats) @@ -195,7 +205,7 @@ function statisticDateFill(keyword, dateFoundElement) { statistics.dates.days[dayOfDate] = Object.create(dateStats) } fillPeriodTime(statistics.dates.days[dayOfDate], keyword) - + statistics.dates.days[dayOfDate].tasks_done.push(header) } function findOldestDate(currentDate) { @@ -316,8 +326,8 @@ fs.readFile(sourceFilePath, 'utf8', function (err, data) { convertedDate = moment(dateFound[0], 'YYYY-MM-DD ddd HH:mm') } let formattedDate = moment(convertedDate).format() - - statisticDateFill(keyword, convertedDate) + console.log('currentTask.header', currentTask.header) + statisticDateFill(keyword, convertedDate, currentTask.header) findOldestDate(convertedDate) currentTask.dates[keyword] = formattedDate; @@ -499,7 +509,7 @@ function sortByValue(literalobject) { export async function writeFileInOuputFolderFromJsonObject(fileName, jsonObjectThing) { - console.log('statistics.dates', statistics.dates) + // console.log('statistics.dates', statistics.dates) return await fs.writeFile( `${outputAbsolutePath}${fileName}`, diff --git a/utils.mjs b/utils.mjs index 66b698e..fab4002 100644 --- a/utils.mjs +++ b/utils.mjs @@ -1,3 +1,5 @@ +import fs from "node-fs"; + export const headersTsv = 'amount\t' + 'content\t' + 'description\t' + @@ -9,4 +11,23 @@ export const headersTsv = 'amount\t' + 'source\t' + 'start\t' + 'unique id\t' + - 'url\t' \ No newline at end of file + 'url\t' + + + +export async function writeFileInOuputFolderFromJsonObject(fileName, jsonObjectThing) { + + + return await fs.writeFile( + `${outputAbsolutePath}${fileName}`, + JSON.stringify(jsonObjectThing), + "utf8", + (err) => { + if (err) { + console.log(`Error writing file: ${err}`); + } else { + console.log(`File ${fileName} is written successfully!`); + } + } + ); +}