36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
|
const fs = require('fs');
|
||
|
const path = require('path');
|
||
|
const posts = require('./src/_data/old_posts');
|
||
|
|
||
|
const htmlDecode = (input) => {
|
||
|
const doc = new DOMParser().parseFromString(input, "text/html");
|
||
|
return doc.documentElement.textContent;
|
||
|
}
|
||
|
|
||
|
|
||
|
(async () => {
|
||
|
const postList = await posts();
|
||
|
|
||
|
const postsDirectory = path.join(__dirname, 'src', 'blog', 'posts');
|
||
|
if (!fs.existsSync(postsDirectory)) {
|
||
|
fs.mkdirSync(postsDirectory, { recursive: true });
|
||
|
}
|
||
|
|
||
|
for (const post of postList) {
|
||
|
const date = new Date(post.date);
|
||
|
const dir = path.join(__dirname, 'src', 'blog', 'posts', date.getFullYear().toString(), (date.getMonth() + 1).toString());
|
||
|
if (!fs.existsSync(dir)) {
|
||
|
fs.mkdirSync(dir, { recursive: true });
|
||
|
}
|
||
|
const postPath = path.join(dir, `${post.slug}.md`);
|
||
|
const postContent = `---
|
||
|
title: "${post.title.rendered}"
|
||
|
date: ${post.date}
|
||
|
slug: ${post.slug}
|
||
|
${post.tags.length ? `tags: [${post.tags.map(tag => tag.slug).join(', ')}]` : ''}
|
||
|
---
|
||
|
${post.markdown.replaceAll('\\\'','\'')}
|
||
|
`;
|
||
|
fs.writeFileSync(postPath, postContent);
|
||
|
}
|
||
|
})();
|