165 lines
4.8 KiB
TypeScript
165 lines
4.8 KiB
TypeScript
|
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 + '<br/>' + post.post_content);
|
||
|
let source = post.post_excerpt + '<br/>' + 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));
|
||
|
|
||
|
|