rss.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:2k
源码类别:

Ajax

开发平台:

Others

  1. #!/usr/bin/env ruby
  2. # RSS 0.9/2.0 converter for typo by Chris Lee <clee@kde.org>
  3. #
  4. # No need to make a backup of the original blog, really. This takes a URL for a
  5. # read-only import, so there's not really any chance of it munging the original
  6. # blog's data, unless somehow an HTTP GET causes your blog server to ignite.
  7. #
  8. # Even so, this script is still PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
  9. require File.dirname(__FILE__) + '/../../config/environment'
  10. require 'optparse'
  11. require 'net/http'
  12. require 'rss/2.0'
  13. class RSSMigrate
  14.   attr_accessor :options
  15.   def initialize
  16.     self.options = {}
  17.     self.parse_options
  18.     self.convert_entries
  19.   end
  20.   def convert_entries
  21.     feed = Net::HTTP.get(URI.parse(self.options[:url]))
  22.     rss = RSS::Parser.parse(feed)
  23.     puts "Converting #{rss.items.length} entries..."
  24.     rss.items.each do |item|
  25.       puts "Converting '#{item.title}'"
  26.       a = Article.new
  27.       a.author = self.options[:author]
  28.       a.title = item.title
  29.       a.body = item.description
  30.       a.created_at = item.pubDate
  31.       a.save
  32.     end
  33.   end
  34.   def parse_options
  35.     OptionParser.new do |opt|
  36.       opt.banner = 'Usage: rss.rb [options]'
  37.       opt.on('-a', '--author AUTHOR', 'Username of author in typo') do |a|
  38.         self.options[:author] = a
  39.       end
  40.       opt.on('-u', '--url URL', 'URL of RSS feed to import.') do |u|
  41.         self.options[:url] = u
  42.       end
  43.       opt.on_tail('-h', '--help', 'Show this message.') do
  44.         puts opt
  45.         exit
  46.       end
  47.       opt.parse!(ARGV)
  48.     end
  49.     unless self.options.include?(:author) and self.options.include?(:url)
  50.       puts 'See rss.rb --help for help.'
  51.       exit
  52.     end
  53.   end
  54. end
  55. RSSMigrate.new