Sha256: 045788e6677e2df0cd52d96aca656f3ae1f3c88b93f96dffdb6f6877dbbd57e2

Contents?: true

Size: 1.29 KB

Versions: 9

Compression:

Stored size: 1.29 KB

Contents

# 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

Version data entries

9 entries across 9 versions & 3 rubygems

Version Path
jekyll-0.12.1 lib/jekyll/migrators/rss.rb
jekyll-reloaded-0.12.2 lib/jekyll/migrators/rss.rb
jekyll-0.12.0 lib/jekyll/migrators/rss.rb
spinto-jekyll-0.11.2.5 lib/jekyll/migrators/rss.rb
jekyll-reloaded-0.12.1 lib/jekyll/migrators/rss.rb
jekyll-reloaded-0.12 lib/jekyll/migrators/rss.rb
spinto-jekyll-0.11.2.3 lib/jekyll/migrators/rss.rb
spinto-jekyll-0.11.2.2 lib/jekyll/migrators/rss.rb
spinto-jekyll-0.11.2.1 lib/jekyll/migrators/rss.rb