-
-
Save mrchrisadams/211654 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# Script to import tumblr posts into local markdown posts ready to be consumed by Jekyll. | |
# Inspired by New Bamboo's post http://blog.new-bamboo.co.uk/2009/2/20/migrating-from-mephisto-to-jekyll | |
require 'rubygems' | |
require 'open-uri' | |
require 'nokogiri' | |
# Configuration | |
tumblr_domain = "YOUR DOMAIN" | |
write_directory = "PATH TO SAVE FILES TO (NO TRAILING SLASH)" | |
# Connect to Tumblr and read the API source | |
open(tumblr_domain+"/api/read") do |xml| | |
doc = Nokogiri::XML.parse(xml) | |
doc.css("post").each do |post_tag| | |
# Gather data about each post | |
date = Date.parse(post_tag.attributes["date"].content) | |
case | |
when post_tag.attributes["type"].content == "regular" | |
title = post_tag.css("regular-title").first.content | |
body = post_tag.css("regular-body").first.content | |
filename = "#{date.strftime("%Y-%m-%d")}-#{title.gsub(/(\s|[^a-zA-Z0-9])/,"-").gsub(/-+/,'-').gsub(/-$/,'')}.markdown" | |
jekyll_post = <<-EOPOST | |
--- | |
title: #{title} | |
layout: post | |
--- | |
#{body} | |
EOPOST | |
# Write files | |
puts filename | |
puts jekyll_post | |
puts "" | |
file = File.new("#{write_directory}/#{filename}", "w+") | |
file.write(jekyll_post) | |
file.close | |
end | |
end | |
end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment