-
-
Save rmurphey/1968399 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby | |
require 'xmlsimple' | |
require 'active_support/inflector' | |
require 'yaml' | |
require 'json' | |
require 'fileutils' | |
require 'date' | |
class Post | |
def initialize(post) | |
@post = post | |
end | |
def write(dir) | |
filename = File.join(dir, "#{slug}.md") | |
puts "Writing #{filename}" | |
File.open(filename, 'w') do |f| | |
f.write frontmatter | |
f.write "\n\n" | |
f.write content | |
end | |
end | |
private | |
def content | |
@post['body'].first.strip | |
end | |
def title | |
@post['title'].first | |
end | |
def slug | |
date + '-' + title.downcase.parameterize | |
end | |
def date | |
d = Date.parse @post['date'].first | |
d.strftime '%Y-%m-%d' | |
end | |
def tags | |
return '' unless @post['tag'] | |
@post['tag'].join(', ') | |
end | |
def frontmatter | |
[ { | |
'layout' => 'post', | |
'date' => date, | |
'title' => title, | |
'comments' => true, | |
'categories' => tags | |
}.to_yaml, '---' ].join("") | |
end | |
end | |
posts = XmlSimple.xml_in('posterous.xml')['post'] | |
dir = File.join('source', '_posts') | |
FileUtils.mkdir_p dir unless File.exists? dir | |
posts.each do |post| | |
p = Post.new post | |
p.write(File.join('tmp', 'posts')) | |
end |
hey there, thank you so much for sharing this. Do I create this file (posterous-octopress.rb) and put this inside my plugin folder?
Can't see the file included from your repo here (https://github.com/rmurphey/blog-octopress/tree/master/plugins)
I am a novice around web dev but I believe in learning by doing. I hope I figure it out before you reply, but it'll be very helpful if you could point me out. Thanks again!
I just put it in the root of my octopress repo, along with the posterous.xml file, and then executed it with ./posterous.rb
. Note that you'll also need to do chmod 755 posterous.rb
in order to make the file executable. Note too that I had to fiddle with the XML that I got from backuperous.com in order to make it well-formed.
Hi, thanks for the rescue! I was still on it and can't find how to work it.
I'll go through and update/report any unexpected findings. I believe it should work right out of the box.
Thanks again!
Like you suggested, it required some adjustments on the XML file and I made some changes on the posterous.rb in order to make it worked (I had no clue what and how I did it though).
Again, thanks so much for this! Made my day.
I used http://www.backuperous.com/ to generate a backup, tweaked the XML it returned a tiny bit by giving it a single root node with post nodes as its children, and then ran the above.