13 July 2011

Posterous exporter for Toto

I’ve been experimenting a bit with a cute blogging engine called Toto and wanted to migrate my Posterous posts so I wrote a little script in Ruby to download them all and format them in a Toto-appropriate way.

This script uses the posterous gem just to retrieve each post and put it in a YAML text file that Toto can understand. At the moment there are a few problems…

  • Since YAML uses “:” as a control character I had to remove any colons from titles and replaced them with dashes… I wonder if there’s a way to preserve them so that the text files are still human-readable?
  • The posterous gem only seems to get one page of posts at a time since my blog has 19 pages, I just ran my downloading method for each one.

Anyway, here’s the script! Maybe someone will chime in and tell me all the things I’m doing wrong.

#!/usr/bin/env ruby  require 'posterous' require 'toto'  Posterous.config = { 'username'  => 'username', 'password'  => 'password', 'api_token' => 'api_token' }  include Posterous  @site = Site.primary  Dir.chdir( "~/src/posterousparser" )  def saveposts(pagenumber = 0) @site.posts(:page => pagenumber).each do |e| timestamp = e.display_date yyyy = timestamp[0..3] mm = timestamp[5..6] dd = timestamp[8..9]  title = e.title.gsub(":", "-") slug = title.strip.slugize filename = "#{yyyy}-#{mm}-#{dd}-#{slug}.txt"  puts "Writing #{filename}...\n"  file = File.new("#{filename}", "w") file.puts "---\n" file.puts "title: #{title}\n" file.puts "author: #{e.user["display_name"]}" file.puts "date: #{dd}/#{mm}/#{yyyy}\n" file.puts "timestamp: #{e.display_date}\n"  file.print "tags: "  e.tags.each do |a| file.print "#{a["name"]} " end  file.puts "\n\n" file.puts "#{e.body_full}\n" file.puts "\n" file.close  end end  puts "Downloading posts now!"  for i in 1..19 do saveposts(i) end

Posted via email from charles martin

0 comments: