import * as tkblog from './extractions_bdd/tykayn_wptkblog_posts.json'; import {v4 as uuidv4} from 'uuid'; import moment = require('moment'); const fs = require('fs'); // get all posts // @ts-ignore console.log('tkblog.length', tkblog.length); let ii = 0; let max_counter = 1500; // max_counter = 3; let now: any = new Date(); now = now.getUTCDate(); let blog_name = 'tykayn_blog'; let blog_title = 'Tykayn blog'; let lists_of_links_org = []; let indexUUID = uuidv4(); var pandoc = require('pandoc'); async function loopOnJson() { // loop time // @ts-ignore tkblog.map((post: any) => { ii++; if (ii < max_counter && (post.post_type == 'post' || post.post_type == 'article')) { console.log(ii, 'titre', post.post_name); let postuniqID = uuidv4(); // console.log('post',post) /** header de fichier org roam :PROPERTIES: :ID: ${postuniqID} :END: #+title: ${post.post_name} liens de notes org roam [[id:720e9d47-f88f-4517-951f-403d47b01c10][blogs]] ** tykayn blog [[id:02f6018b-9196-4326-8f09-9d45d7a548fc][tykayn_blog]] **/ let sitename = 'tkblog'; let fileName = (post.post_date.replace(' ', '').replace(/-/g, '').replace(/:/g, '')) + '_' + sitename + '_' + ii + '_' + post.post_name + '.org'; let contentConverted = ''; let guid = post.post_guid && post.post_guid.length ? '[[' + post.post_guid + ']]' : ''; let liens_bottom = '- tykayn blog [[id:02f6018b-9196-4326-8f09-9d45d7a548fc][' + blog_title + ']]\n'; // convert to markdown // let source = formatHtml(post.post_excerpt + '
' + post.post_content); let source = post.post_excerpt + '
' + post.post_content; let picture = post.post_mime_type.includes('image') ? '** Image \n [[img:' + post.post.guid + ']]' : ''; console.log('add link to index', post.post_title); lists_of_links_org.push({ title: post.post_title, date: post.post_date, org_id: postuniqID, }) console.log('convert source html to Org'); pandoc.convert('html', source, ['org'], function (result, err) { contentConverted = result.org if (!contentConverted) { console.log('------- content converted to nothing', source.length); console.log('source', source); contentConverted = ':html: \n\n' + source + ''; } contentConverted = contentConverted.replace(' \\\\', ''); if (err) { console.log('pandoc exited with status code ' + err) } else { let fileContentConverted = `:PROPERTIES: :ID: ${postuniqID} :END: #+title: ${post.post_name} * Article - ID: ${post.ID} - guid: ${guid} - status: ${post.post_status} - publié le: <${post.post_date ? post.post_date : ''}> - modifié: <${post.post_modified ? post.post_modified : ''}> - Index des articles du blog [[id:${indexUUID}][${blog_title}]] ${picture} ** ${post.post_title} ${contentConverted} * Liens ${liens_bottom} `; writeNewFile(fileName, fileContentConverted) } }); } else { // @ts-ignore if (ii === tkblog.length) { console.log('max_counter atteint', max_counter); // on last element, create index makeIndexOfFiles(lists_of_links_org); } } }) } function writeNewFile(fileName, fileContent) { console.log('write file ', fileName); return fs.writeFile( `./output/${fileName}`, fileContent, "utf8", (err: any) => { if (err) { console.log(`Error writing file: ${err}`); } else { console.log(`File ${fileName} is written successfully!`); } } ); } function makeIndexOfFiles(lists_of_links_org) { console.log('write index', lists_of_links_org.length, 'links'); // make an org file for each let list_of_links_content = ''; lists_of_links_org.reverse().forEach(pair => { list_of_links_content += `\n** <${pair.date}> [[id:${pair.org_id}][${pair.title}]]` }) let file_index_content = ` :PROPERTIES: :ID: ${indexUUID} :END: #+title: ${blog_name}_index * Index des articles Org ${list_of_links_content} `; var today = moment().format('YYYYMMDDHHmmss'); console.log(today, 'list_of_links_content', file_index_content); writeNewFile(today + '__' + blog_name + '_index.org', file_index_content); } loopOnJson().then(r => console.log('response', r));