#!/usr/bin/env ruby # Bot to populare links from a feed # # Usage: bot.rb [OPTION] url # # -h, --help: # show help # -d, --database: # database to use # -t, --tags: # link tags # -u, --user: # OpenID of the user creating the links # # url: The feed url require 'rubygems' require_gem 'feedtools' require 'getoptlong' require 'rdoc/usage' require 'linkr' include FeedTools include Linkr::Models opts = GetoptLong.new( [ '--help', '-h', GetoptLong::NO_ARGUMENT ], [ '--tags', '-t', GetoptLong::REQUIRED_ARGUMENT ], [ '--user', '-u', GetoptLong::REQUIRED_ARGUMENT ], [ '--database', '-d', GetoptLong::REQUIRED_ARGUMENT ] ) url = $*[0] db = nil tags = '' user_open_id = nil opts.each do |opt, arg| case opt when '--help' RDoc::usage when '--database' db = arg when '--tags' tags = arg when '--user' user_open_id = arg end end if ARGV.length != 1 puts "Missing url argument (try --help)" exit 0 end # Connecting the database Linkr::Models::Base.establish_connection :adapter => 'sqlite3', :database => db Linkr.create if Linkr.respond_to? :create # Finding of creating the user user = User.find_by_open_id user_open_id user = User.create :open_id => user_open_id if user.nil? puts "Connecting to #{url}..." feed = Feed.open(url) puts " Getting feed from #{feed.title} ".center(80, '=') feed.items.each do |item| if Link.find_by_url item.link puts " exists #{item.title}" else puts " adding #{item.title}" Link.create :title => item.title, :url => item.link, :tags => tags, :user => user end end puts '=' * 80