Skip to content

Instantly share code, notes, and snippets.

@w33ble
Created June 9, 2013 17:22
Show Gist options
  • Save w33ble/5744373 to your computer and use it in GitHub Desktop.
Save w33ble/5744373 to your computer and use it in GitHub Desktop.
Wordpress export parser
fs = require 'fs'
sprintf = require('sprintf').sprintf
Parser = require 'feedparser'
if process.argv.length != 3
console.error "Please specify a file to parse"
return process.exit 1
fs.writeFileSync 'posts/htaccess', 'RewriteEngine on\n\n'
fs.createReadStream(process.argv[2])
.on 'error', (err) ->
console.error err
# .on 'data', (fd) ->
# console.log arguments
.pipe(new Parser())
.on 'error', (err) ->
console.error err
.on 'article', (article) ->
d = new Date article.date
dateStr = sprintf "%04d-%02d-%02d", d.getFullYear(), d.getMonth()+1, d.getDate()
oldPath = article.link.replace(/http:\/\/joefleming.net\//, '').replace(/\/$/, '')
tags = []
for tag in article['rss:category']
tags.push tag['#']
tags = tags.join ','
body = article['content:encoded']['#']
.replace("<!--more-->", '') # remove the more stuff
.replace(/^/, '<p>') # sprinkle in the p tags
.replace(/\n\n/g, '</p>\n\n<p>')
.replace(/$/, '</p>')
# console.log article['content:encoded']
fs.writeFile "posts/#{article['wp:post_name']['#']}.html",
"""---
layout: post
title: "#{article.title}"
date: #{dateStr}
dateTime: #{article.date}
urls: #{oldPath}
tags: #{tags}
---
#{body}
"""
, (err) ->
unless err
console.log "Successfully exported '#{article.title}'"
fs.writeFile "posts/htaccess", "RewriteRule ^#{oldPath} /posts/#{article['wp:post_name']['#']}.html [R=301,L]\n", flag: 'a'
else
console.error "** Failed to export '#{article.title}'"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment