const fs = require('fs'); const path = require('path'); const he = require('he'); const DATA_DIR = path.join(__dirname, '..', 'data', 'wordpress'); const CONTENT_DIR = path.join(__dirname, '..', 'content'); function generateContent() { const posts = JSON.parse(fs.readFileSync(path.join(DATA_DIR, 'posts.json'), 'utf8')); // Ensure content directory exists if (!fs.existsSync(CONTENT_DIR)) { fs.mkdirSync(CONTENT_DIR, { recursive: true }); } posts.forEach(post => { const slug = post.slug; const date = new Date(post.date); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); // Get the primary category (first category in the list) const primaryCategory = post._embedded?.['wp:term']?.[0]?.[0]; const categorySlug = primaryCategory ? primaryCategory.slug : 'non-classe'; const contentDir = path.join(CONTENT_DIR, categorySlug, `${year}-${month}-${slug}`); // const contentDir = path.join(CONTENT_DIR, `${year}-${month}-${slug}`); if (!fs.existsSync(contentDir)) { fs.mkdirSync(contentDir, { recursive: true }); } const frontmatter = { title: he.decode(post.title.rendered), date: post.date, draft: post.status !== 'publish', slug: slug, wordpress_id: post.id, excerpt: he.decode(post.excerpt.rendered.replace(/<[^>]*>/g, '')), featured_image: post._embedded?.['wp:featuredmedia']?.[0]?.source_url || '', author: post._embedded?.author?.[0]?.name || 'Unknown', categories: (post._embedded?.['wp:term']?.[0] || []).map(cat => cat.name || 'Non classé'), tags: (post._embedded?.['wp:term']?.[1] || []).map(cat => cat.name || 'Non classé'), section: categorySlug }; // Decode HTML entities in the content and clean up HTML tags let contentHtml = he.decode(post.content.rendered); contentHtml = contentHtml .replace(/

\s*<\/p>/g, '') // Remove empty paragraphs .replace(/<\/p>\s*

/g, '\n\n') // Replace paragraph breaks with newlines const content = `--- ${Object.entries(frontmatter) .map(([key, value]) => `${key}: ${JSON.stringify(value)}`) .join('\n')} --- ${contentHtml.trim()}`; fs.writeFileSync(path.join(contentDir, 'index.md'), content); }); console.log(`✅ Generated ${posts.length} content files`); } generateContent();