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

Ajax

开发平台:

Others

  1. #!/usr/bin/env ruby
  2. # RSS 0.2/2.0/Atom converter to typo by Lennon Day-Reynolds <rcoder@gmail.com>
  3. # Shamelessly copied from RSS-only converter by Chris Lee
  4. require File.dirname(__FILE__) + '/../../config/environment'
  5. require 'optparse'
  6. begin
  7.   require 'feed_tools'
  8. rescue LoadError
  9.   STDERR.puts <<-EOF
  10. This converter requires feedtools to be installed.
  11. Please run `gem install feedtools` and try again.
  12. EOF
  13.   exit 1
  14. end
  15. class FeedMigrate
  16.   attr_accessor :options
  17.   def initialize
  18.     self.options = {}
  19.     self.parse_options
  20.     self.convert_entries
  21.   end
  22.   def convert_entries
  23.    feed = FeedTools::Feed.open(self.options[:url])
  24.     puts "Converting #{feed.items.length} entries..."
  25.     feed.items.each do |item|
  26.       puts "Converting '#{item.title}'"
  27.       a = Article.new
  28.       a.author = self.options[:author]
  29.       a.title = item.title
  30.       a.body = item.description
  31.       a.created_at = item.published
  32.       a.save
  33.     end
  34.   end
  35.   def parse_options
  36.     OptionParser.new do |opt|
  37.       opt.banner = 'Usage: feed.rb [options]'
  38.       opt.on('-a', '--author AUTHOR', 'Username of author in typo') do |a|
  39.         self.options[:author] = a
  40.       end
  41.       opt.on('-u', '--url URL', 'URL of RSS feed to import.') do |u|
  42.         self.options[:url] = u
  43.       end
  44.       opt.on_tail('-h', '--help', 'Show this message.') do
  45.         puts opt
  46.         exit
  47.       end
  48.       opt.parse!(ARGV)
  49.     end
  50.     unless self.options.include?(:author) and self.options.include?(:url)
  51.       puts 'See feed.rb --help for help.'
  52.       exit
  53.     end
  54.   end
  55. end
  56. FeedMigrate.new