import * as heliablog from './extractions_bdd/helia_wp_posts.json'; import {v4 as uuidv4} from 'uuid'; import moment = require('moment'); const fs = require('fs'); // get all posts console.log('heliablog.length', heliablog.length); const formatHtml = require('html-format'); let ii = 0; let max_counter = 100; // max_counter = 3; let now: any = new Date(); now = now.getUTCDate(); let blog_name = 'heliablog'; let blog_title = 'Hélia blog'; let lists_of_links_org = []; let indexUUID = uuidv4(); var pandoc = require('pandoc'); async function loopOnJson() { // loop time heliablog.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]] ** Helia blog [[id:5a4dab45-956b-4a8f-88e2-a50a0cdebe5c][helia]] **/ let sitename = 'heliablog'; 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 = '- [[id:5a4dab45-956b-4a8f-88e2-a50a0cdebe5c][Hélia blog]]\n- [[id:3011e9b1-4af3-4f7a-be31-cfc08903fb8d][Claire]]'; // convert to markdown 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, }) pandoc.convert('html', source + ' ', ['org'], function (result, err) { if (result.org) { contentConverted = result.org; contentConverted = result.org.replace(' \\\\', ''); if (!contentConverted) { console.log('------- content converted to nothing', source.length); console.log('source', source); contentConverted = '#+BEGIN_SRC html\n' + source + '\n#+END_SRC'; } } 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 [[id:${indexUUID}][blog d'Hélia]] ${picture} ** ${post.post_title} ${contentConverted} * Liens ${liens_bottom} `; writeNewFile(fileName, fileContentConverted) } ; }); } else if (ii === heliablog.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); } let res = loopOnJson();