Skip to content

Instantly share code, notes, and snippets.

@yyolk
Created March 3, 2012 01:50
Show Gist options
  • Save yyolk/1963531 to your computer and use it in GitHub Desktop.
Save yyolk/1963531 to your computer and use it in GitHub Desktop.
RSS Twitter Bot
##
## 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