Skip to content

Instantly share code, notes, and snippets.

@francois2metz
Created July 20, 2011 17:46
Show Gist options
  • Save francois2metz/1095473 to your computer and use it in GitHub Desktop.
Save francois2metz/1095473 to your computer and use it in GitHub Desktop.
Migrate from drupal to jekyll
#!/usr/bin/env ruby
require 'net/http'
require 'jekyll'
def get_name(title, time)
slug = title.strip.downcase.gsub(/'/, '').gsub(/"/, '').gsub(/(&|&)/, ' and ').gsub(/[\s\.\/\\]/, '-').gsub(/[^\w-]/, '').gsub(/[-_]{2,}/, '-').gsub(/^[-_]/, '').gsub(/[-_]$/, '')
name = time.strftime("%Y-%m-%d-") + slug + '.md'
end
(1..307).each do |node_id|
url = URI.parse("http://devblog/?q=/node/#{node_id}")
req = Net::HTTP::Get.new("#{url.path}?#{url.query}")
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
begin
next if res.code != "200"
post = res.body.force_encoding("utf-8")
File.open("/tmp/node_#{node_id}.md", 'w') {|f| f.write(post) }
page = Jekyll::Page.new("", "", "/tmp/", "node_#{node_id}.md")
filename = get_name(page.data["title"], Time.at(page.data["created"]))
File.open("_posts/#{filename}", 'w') {|f| f.write(post) }
rescue => e
puts "#{node_id} #{e}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment