DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
RSS Twitter Bot
Republish an RSS feed on a twitter account. This was the source I used to run the <a href="http://twitter.com/woot">Woot Twitter Bot</a> before they took it over.
require 'rubygems'
require 'active_record'
require 'simple-rss'
require 'open-uri'
require 'twitter'
#twitter account to post to
twitter_email = "yourtwitteremail@bla.com"
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
Run this once with the lines uncommented to create the DB, then slap it in your crontab.






Comments
Danish Fayaz replied on Sat, 2012/10/06 - 3:16am
Thanks for making the effort to talk about this, I experience highly about it and really like studying more on this subject. http://dsnewz.blogspot.com/
Danish Fayaz replied on Sat, 2012/10/06 - 1:18am
Thanks for making the effort to talk about this, I experience highly about it and really like studying more on this subject.
Star Khan replied on Sat, 2012/09/15 - 12:02pm
Hani Jee replied on Sat, 2012/08/04 - 10:58pm
Snippets Manager replied on Mon, 2012/04/30 - 6:19am
Snippets Manager replied on Mon, 2012/04/30 - 6:19am
Martina White replied on Tue, 2009/12/08 - 6:22am