feat: backup blog posts and fix WordPress caption shortcodes in markdown files
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
# Blog Post Fixing Script
|
||||
|
||||
This Node.js script automatically fixes common issues in blog posts when migrating from WordPress to Astro, specifically:
|
||||
|
||||
1. **HTML entities to Unicode conversion** - Converts HTML entities like `🎯` to proper Unicode characters like 🎯
|
||||
2. **WordPress caption shortcodes to Markdown** - Converts WordPress `[caption]` shortcodes to clean Markdown image syntax
|
||||
3. **Image URL conversion** - Converts WordPress image URLs to proper Astro asset import paths
|
||||
|
||||
## Features
|
||||
|
||||
- **Automatic backup creation** before making any changes
|
||||
- **Comprehensive HTML entity support** - Handles both named (`&`) and numeric (`🎯`, `{`) entities
|
||||
- **WordPress caption conversion** - Converts `[caption]` shortcodes to Markdown images with optional captions
|
||||
- **Smart image path conversion** - Converts WordPress upload URLs to Astro asset paths (`~/assets/images/...`)
|
||||
- **Image reference fixing** - Automatically matches broken image references with existing files
|
||||
- **Detailed logging** - Complete logs of all changes made
|
||||
- **Error handling** - Robust error handling with detailed error messages
|
||||
- **Safe operation** - Only modifies files that actually need changes
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
# Run the script
|
||||
node fix-blog-posts.cjs
|
||||
```
|
||||
|
||||
## What it fixes
|
||||
|
||||
### 1. HTML Entities
|
||||
**Before:**
|
||||
```markdown
|
||||
title: '🎯 Dual Band Flower Pot Anteni'
|
||||
```
|
||||
|
||||
**After:**
|
||||
```markdown
|
||||
title: '🎯 Dual Band Flower Pot Anteni'
|
||||
```
|
||||
|
||||
### 2. WordPress Caption Shortcodes
|
||||
**Before:**
|
||||
```markdown
|
||||
[caption id="attachment_223" align="aligncenter" width="300"]<img class="wp-image-223 size-medium" src="https://radio.org.tr/wp-content/uploads/2025/04/DMR-HS-300x300.png" alt="D.MR. Hot Spot" width="300" height="300" /> Örnek D.M.R. HotSpot[/caption]
|
||||
```
|
||||
|
||||
**After:**
|
||||
```markdown
|
||||

|
||||
*Örnek D.M.R. HotSpot*
|
||||
```
|
||||
|
||||
### 3. Image Path Conversion
|
||||
**Before:**
|
||||
```markdown
|
||||

|
||||
```
|
||||
|
||||
**After:**
|
||||
```markdown
|
||||

|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
You can modify the configuration at the top of the script:
|
||||
|
||||
```javascript
|
||||
const config = {
|
||||
postsDirectory: './src/data/post', // Where your blog posts are located
|
||||
assetsDirectory: './src/assets/images', // Where your images are stored
|
||||
backupDirectory: './blog-posts-backup', // Where backups are created
|
||||
logFile: './fix-blog-posts.log' // Log file location
|
||||
};
|
||||
```
|
||||
|
||||
## Output
|
||||
|
||||
The script provides detailed console output and creates comprehensive logs:
|
||||
|
||||
```
|
||||
✅ Blog post processing completed successfully!
|
||||
📄 Check ./fix-blog-posts.log for detailed logs
|
||||
💾 Backup created in ./blog-posts-backup
|
||||
|
||||
Processing Summary:
|
||||
- Total files processed: 38
|
||||
- Files with changes: 13
|
||||
- Files with errors: 0
|
||||
- Files unchanged: 25
|
||||
```
|
||||
|
||||
## Safety Features
|
||||
|
||||
- **Automatic backup** - Creates a complete backup of all posts before making changes
|
||||
- **Dry run capability** - Logs what would be changed without actually modifying files
|
||||
- **Atomic operations** - Either all changes to a file succeed, or none are applied
|
||||
- **Image validation** - Only converts image references if the target file actually exists
|
||||
- **Detailed logging** - Every change is logged with before/after details
|
||||
|
||||
## Supported HTML Entities
|
||||
|
||||
The script includes comprehensive support for:
|
||||
- Common HTML entities (`&`, `<`, `>`, etc.)
|
||||
- Unicode emoji entities (`🎯` → 🎯)
|
||||
- Extended character entities (`—`, `…`, etc.)
|
||||
- Numeric entities (both decimal and hexadecimal)
|
||||
|
||||
## Error Handling
|
||||
|
||||
The script handles various error conditions gracefully:
|
||||
- Missing files or directories
|
||||
- Permission issues
|
||||
- Malformed content
|
||||
- Missing images
|
||||
- Invalid HTML entities
|
||||
|
||||
All errors are logged with detailed information for troubleshooting.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Node.js (any recent version)
|
||||
- File system permissions to read/write in the project directory
|
||||
|
||||
## Changelog
|
||||
|
||||
### v1.0.0
|
||||
- Initial release with HTML entity conversion, WordPress caption conversion, and image path fixing
|
||||
- Comprehensive logging and backup system
|
||||
- Support for 500+ HTML entities and Unicode characters
|
||||
- Smart image file matching and validation
|
||||
Reference in New Issue
Block a user