Skip to content
Browse files

Merge pull request #460 from kendagriff/master

RSS Migrator
  • Loading branch information...
2 parents 8adfaea + 9523c39 commit 613a7a46a3651045a5441ec95adff70141f0b94d @mojombo mojombo committed Jan 22, 2012
Showing with 47 additions and 0 deletions.
  1. +47 −0 lib/jekyll/migrators/rss.rb
View
47 lib/jekyll/migrators/rss.rb
@@ -0,0 +1,47 @@
+# Created by Kendall Buchanan (https://github.com/kendagriff) on 2011-12-22.
+# Use at your own risk. The end.
+#
+# Usage:
+# (URL)
+# ruby -r '_import/rss.rb' -e "Jekyll::MigrateRSS.process('http://yourdomain.com/your-favorite-feed.xml')"
+#
+# (Local file)
+# ruby -r '_import/rss.rb' -e "Jekyll::MigrateRSS.process('./somefile/on/your/computer.xml')"
+
+require 'rubygems'
+require 'rss/1.0'
+require 'rss/2.0'
+require 'open-uri'
+require 'fileutils'
+require 'yaml'
+
+module Jekyll
+ module MigrateRSS
+
+ # The `source` argument may be a URL or a local file.
+ def self.process(source)
+ content = ""
+ open(source) { |s| content = s.read }
+ rss = RSS::Parser.parse(content, false)
+
+ raise "There doesn't appear to be any RSS items at the source (#{source}) provided." unless rss
+
+ rss.items.each do |item|
+ formatted_date = item.date.strftime('%Y-%m-%d')
+ post_name = item.title.split(%r{ |!|/|:|&|-|$|,}).map { |i| i.downcase if i != '' }.compact.join('-')
+ name = "#{formatted_date}-#{post_name}"
+
+ header = {
+ 'layout' => 'post',
+ 'title' => item.title
+ }
+
+ File.open("_posts/#{name}.html", "w") do |f|
+ f.puts header.to_yaml
+ f.puts "---\n"
+ f.puts item.description
+ end
+ end
+ end
+ end
+end

0 comments on commit 613a7a4

Please sign in to comment.
Something went wrong with that request. Please try again.