commit
613a7a46a3
|
@ -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
|
Loading…
Reference in New Issue