feat: add ePub generator script for blog posts

main
brobert (aider) 3 months ago
parent c437b8adb1
commit 49a9198af9

@ -0,0 +1,57 @@
import { readFile } from 'fs/promises';
import Epub from 'epub-gen';
import { parseHTML } from 'linkedom';
interface BlogPost {
title: string;
author: string;
content: string;
url: string;
}
async function generateEpub() {
// Read the scraped posts
const postsData = await readFile('posts.json', 'utf-8');
const posts: BlogPost[] = JSON.parse(postsData);
if (posts.length === 0) {
console.error('No posts found in posts.json');
return;
}
// Prepare ePub options
const options = {
title: 'Crónicas Periodísticas',
author: posts[0].author, // Using first post's author as main author
output: 'cronicas-periodisticas.epub',
content: [],
appendChapterTitles: true,
verbose: true
};
// Convert each post to ePub chapter format
for (const post of posts) {
const { document } = parseHTML(post.content);
// Clean up content - remove unwanted elements if needed
const content = document.body.innerHTML;
options.content.push({
title: post.title,
author: post.author,
data: `
<h1>${post.title}</h1>
<p><em>Por ${post.author}</em></p>
${content}
<p><a href="${post.url}">Publicación original</a></p>
`
});
}
// Generate the ePub
console.log(`Generating ePub with ${posts.length} posts...`);
await new Epub(options).promise;
console.log('ePub generated successfully!');
}
generateEpub().catch(console.error);
Loading…
Cancel
Save