Created
March 3, 2012 01:50
-
-
Save yyolk/1963531 to your computer and use it in GitHub Desktop.
RSS Twitter Bot
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## | |
## This file is originally from: http://snippets.dzone.com/posts/show/3714 by user `jnewland` | |
## Instructions by jnewland: | |
## | |
## Run this once with the lines uncommented to create the DB, then slap it in your crontab. | |
## | |
## That's it! | |
require 'rubygems' | |
require 'active_record' | |
require 'simple-rss' | |
require 'open-uri' | |
require 'twitter' | |
#twitter account to post to | |
twitter_email = "[email protected]" | |
twitter_password = "secret" | |
#rss feed to post | |
rss_url = "http://yoursite.com/index.xml" | |
rss_user_agent = "http://twitter.com/yourbot" | |
#sqlite db | |
path_to_sqlite_db = "/PATH/TO/db.sqlite" | |
ActiveRecord::Base.logger = Logger.new(STDERR) | |
ActiveRecord::Base.colorize_logging = false | |
ActiveRecord::Base.establish_connection( | |
:adapter => "sqlite3", | |
:dbfile => path_to_sqlite_db | |
) | |
#uncomment this section the first time to create the table | |
# | |
#ActiveRecord::Schema.define do | |
# create_table :item do |table| | |
# table.column :title, :string | |
# table.column :link, :string | |
# end | |
#end | |
class Item < ActiveRecord::Base | |
def to_s | |
"#{self.title[0..(130-self.link.length)]} - #{self.link}" | |
end | |
end | |
#run the beast | |
rss_items = SimpleRSS.parse open(rss_url ,"User-Agent" => rss_user_agent) | |
for item in rss_items.items | |
Item.transaction do | |
unless existing_item = Item.find(:all, :conditions => ["link=?", item.link]).first | |
twitter ||= Twitter::Base.new(twitter_email, twitter_password) | |
new_item = Item.create(:title => item.title, :link => item.link) | |
twitter.post(new_item.to_s) | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment