40 lines
1.5 KiB
JavaScript
40 lines
1.5 KiB
JavaScript
import fs from 'fs/promises';
|
||
import path from 'path';
|
||
|
||
const CONTENT_DIR = path.join(process.cwd(), 'content', 'blog');
|
||
|
||
async function cleanup() {
|
||
const files = await fs.readdir(CONTENT_DIR);
|
||
const mdFiles = files.filter(f => f.endsWith('.md'));
|
||
|
||
console.log(`Cleaning up ${mdFiles.length} files...`);
|
||
|
||
for (const file of mdFiles) {
|
||
const filePath = path.join(CONTENT_DIR, file);
|
||
let content = await fs.readFile(filePath, 'utf8');
|
||
|
||
// 1. Remove Author/Byline block (usually at the start after Title)
|
||
// Matches: [  ](/@link) [Name](/@link) X min read · Date
|
||
content = content.replace(/\[\s*!\[Poyraz Avsever\].*?\]\(.*?\)\s*\[Poyraz Avsever\].*?\s*\d+ min read\s*·\s*[A-Z][a-z]+\s+\d+,\s+\d+/gs, '');
|
||
|
||
// 2. Remove SignIn / Vote / Bookmark links
|
||
content = content.replace(/\[\s*\]\(\/m\/signin\?.*?\)/gs, '');
|
||
|
||
// 3. Remove "Press enter or click to view image in full size"
|
||
content = content.replace(/Press enter or click to view image in full size/g, '');
|
||
|
||
// 4. Remove "Get Poyraz Avsever’s stories in your inbox" section
|
||
content = content.replace(/## Get Poyraz Avsever’s stories in.*?Remember me for faster sign in/gs, '');
|
||
|
||
// 5. Clean up multiple consecutive newlines that might have been left behind
|
||
content = content.replace(/\n{4,}/g, '\n\n\n');
|
||
|
||
await fs.writeFile(filePath, content, 'utf8');
|
||
console.log(` -> Cleaned: ${file}`);
|
||
}
|
||
|
||
console.log('Cleanup complete!');
|
||
}
|
||
|
||
cleanup();
|