---
title: "RSS Feed Twitt Bots"
description: "The open source world has always be a great source of energy to all especially for code monkeys and terminal junkies, not."
url: "https://h3manth.com/scribe/rss-feed-twitt-bots/"
canonical_url: "https://h3manth.com/scribe/rss-feed-twitt-bots/"
markdown_url: "https://h3manth.com/scribe/blog/rss-feed-twitt-bots.md"
publishDate: "2010-07-02T00:00:00.000Z"
author: "Hemanth HM"
category: "python"
tags: ["ruby","python","linux"]
word_count: 477
reading_time_minutes: 3
x_markdown_tokens: 1223
content_signal: "ai-train=yes, search=yes, ai-input=yes"
---

# RSS Feed Twitt Bots

> The open source world has always be a great source of energy to all especially for code monkeys and terminal junkies, not.

The open source world has always be a great source of energy to all especially for code monkeys and terminal junkies, not all sharing code, but also happiness to the whole world, indeed with the free as in freedom making life more better.

I coded the below two piece of code, one in python and other in ruby to update twitter stats which would be the title and shorten link of the RSS</acronym feed provided.

In the code below, the RSS feed URL considered is of the h3manth.com and is.gd api is used to shorten the url, the other dependences are listed in the comment section of the code.

**Python:**
    
    
    #!/usr/bin/env python
    # Twitt rss feeds
    # rsstwitt.py
    # Author Hemanth.HM
    # Site : www.h3manth.com
    # Licensed under GNU GPL Version 3
    
    import feedparser
    import urllib2
    import twitter
    
    class TweetFeeds:
         def __init__(self,feed,tuser,tpass):
            self.feed = feed
            self.tuser = tuser
            self.tpass = tpass
    
         def get_feed(self):
            """ Get feeds for the first time """
            return feedparser.parse(self.feed)
    
         def shrink(self,url):
            """ Shrink URL """
            surl = "http://is.gd/api.php?longurl=%s"%(url)
            return urllib2.urlopen(surl).read()
    
         def update(self):
            """ Check if there is a new feed """
            old_feed = self.get_feed ()
            """ etag = old_feed.etag or old_feed.modified based on the feed type """
            chk_feed = feedparser.parse(self.feed, modified=old_feed.modified )
            """ chk_feed.status equals 200 implies no new posts """
            if chk_feed.status == 200:
                print "No new posts in the feed to twitt"
                return False
            else:
                long_url=str(old_feed["items"][0]["link"])
                title=str(old_feed["items"][0]["title"])
                return (title+ " " +self.shrink(long_url))
    
         def twitt(self):
            """ Twitt if any new post """
            if (self.update()):
                try:
                    twit = twitter.Api(username=self.tuser, password=self.tpass)
                    if(self.update() != False):
                        twit.PostUpdate(self.update())
                except Exception, why:
                    print str(why)
    
    def main():
        """ Edit the url and tuser and tpass as per your requirments """
        feed="http://www.h3manth.com/rss.xml"
        tuser="hemanth_hm"
        tpass="**********"
        twitfeed = TweetFeeds(feed,tuser,tpass)
        twitfeed.twitt()
        
    if __name__ == "__main__":
        main()
    

**Ruby:**
    
    
    #!/usr/bin/env ruby
    # Author : Hemanth.HM 
    # Site : www.h3manth.com
    # rsstwit.rb
    # License: GNU General Public License Version 3
    # Requirments :
    # Get twitter and feezirra gems 
    # sudo apt-get install libcurl4-gnutls-dev 
    # sudo apt-get install libxslt-dev libxml2-dev
    # gem sources -a http://gems.github.com 
    # sudo gem install pauldix-feedzirra nokogiri twitter 
    
    require "rubygems"
    require 'feedzirra'
    require 'twitter'
    require 'open-uri'
    
    class Rsstwit
    # def twitt
        def twitt
            # set feed_url
            feed_url = "http://www.h3manth.com/rss.xml"
            # fetch feed
            feed = Feedzirra::Feed.fetch_and_parse(feed_url)
            entry    = feed.entries.first
            title    = entry.title 
            link     = open('http://is.gd/api.php?longurl='\
            + entry.url , "UserAgent" => "Ruby-Wget").read
                    status = title+":"+link
                    
            # Grant access to twitter on website
            # and using request token to generate access token
            # As HTTP `raise_errors': (401): Unauthorized -  (Twitter::Unauthorized)
    
            oauth = Twitter::OAuth.new('consumer token', 'consumer secret')
            oauth.authorize_from_access('access token', 'access secret')
                    client = Twitter::Base.new(oauth)
                    client.update(status)
        end
    end
    
    # Create an instance 
    feedtw = Rsstwit.new
    # First twitt
    feedtw.twitt()
    # check for update and twit if new simple?
    updated_feed = Feedzirra::Feed.update(feed)
    if updated_feed.updated?
        feedtw.twitt
    end
    

**Set cron job for every one hour:** 1 */1 * * * /path/scrpt

**Do share your ideas in the comments section below**
