Sha256: 9d53473b39dc4ffb08d7466accd9e721c124c17fcfa95a8e6cc90172c71c72ad
Contents?: true
Size: 1.65 KB
Versions: 2
Compression:
Stored size: 1.65 KB
Contents
# Migrator to import entries from an Serendipity (S9Y) blog # # Entries can be exported from http://blog.example.com/rss.php?version=2.0&all=1 # # Usage: # ruby -r './s9y_rss.rb' -e 'Jekyll::S9Y.process("http://blog.example.com/rss.php?version=2.0&all=1")' require 'open-uri' require 'rss' require 'fileutils' require 'yaml' module JekyllImport module S9Y def self.validate(options) if !options[:source] abort "Missing mandatory option --source, e.g. --source \"http://blog.example.com/rss.php?version=2.0&all=1\"" end end def self.process(options) validate(options) FileUtils.mkdir_p("_posts") source = options[:source] text = '' open(source) { |line| text = line.read } rss = RSS::Parser.parse(text) rss.items.each do |item| post_url = item.link.match('.*(/archives/.*)')[1] categories = item.categories.collect { |c| c.content } content = item.content_encoded.strip date = item.date slug = item.link.match('.*/archives/[0-9]+-(.*)\.html')[1] name = "%02d-%02d-%02d-%s.markdown" % [date.year, date.month, date.day, slug] data = { 'layout' => 'post', 'title' => item.title, 'categories' => categories, 'permalink' => post_url, 's9y_link' => item.link, 'date' => item.date, }.delete_if { |k,v| v.nil? || v == '' }.to_yaml # Write out the data and content to file File.open("_posts/#{name}", "w") do |f| f.puts data f.puts "---" f.puts content end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
jekyll-import-0.1.0.beta3 | lib/jekyll/jekyll-import/s9y.rb |
jekyll-import-0.1.0.beta2 | lib/jekyll/jekyll-import/s9y.rb |