Esta es una ligera implementación de un cliente de twitter escrito en Ruby utilizando la gema twitter, oauth, net/http y json .. esto lo hice hace algunas semanas atrás con la idea de escribir un pequeño bot que buscara usuarios de twitter que hablan sobre temas específicos para después enviarles mensajes.. Al final, el script quedó a medias .. lamentablemente no tuve más tiempo para continuarlo, pero el código esta disponible para aprender y si se puede extender mucho mejor..
La clase Helpers basicamente sirve para consultar en twitter y encontrar las palabras que necesito, esto utilizando json en la respuesta.
Aqui la búsqueda esta limitada a 1 solo tweet, porque no quiero enviar spam a nadie.. además twitter no permite el envío de el mismo mensaje a multiples usuarios porque reconoce que es un bot el que lo hace..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #!/usr/bin/env ruby require 'rubygems' require 'net/http' require 'json' require 'oauth' class Helpers def self.find_tweets(default_keyword, extense_keyword = nil) base_url = "http://search.twitter.com/search.json?" query = (extense_keyword==nil ? default_keyword : default_keyword +"+"+ extense_keyword) url = "#{base_url}&rpp=1&page=1&q=#{URI.encode(query)}" resp = Net::HTTP.get_response(URI.parse(url)) data = resp.body result = JSON.parse(data) if result.has_key? 'Error' raise "Oops!!" end return result['results'] end end |
Este es el código principal, para que funcione les recuerdo que necesitan registrar su aplicación en https://dev.twitter.com/apps/new
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #!/usr/bin/env ruby # Librerias require 'rubygems' require 'json' require 'twitter' require 'helpers' username = "QbitMexhico" # Datos de conexion a twitter TWITTER_CONSUMER_KEY = 'consumerKey' TWITTER_CONSUMER_SECRET = 'consumerSecret' TWITTER_ACCESS_TOKEN = 'accessToken' TWITTER_ACCESS_SECRET = 'accessSecret' # Configurar el cliente Twitter.configure do |config| config.consumer_key = TWITTER_CONSUMER_KEY config.consumer_secret = TWITTER_CONSUMER_SECRET config.oauth_token = TWITTER_ACCESS_TOKEN config.oauth_token_secret = TWITTER_ACCESS_SECRET end # Instanciar client = Twitter::Client.new # Palabra principal mainKeyword = "lego" printf("Utilizando el usuario: %s\n", username) printf("Buscando la palabra clave: %s\n", keywordSelected) # Encontrar tweets usando el REST API de twitter tweets = Helpers.find_tweets(mainKeyword,mainKeyword) tweets.each do |tweet| printf("\nDel usuario: %s\nTweet: %s\n",tweet['from_user'],tweet['text']) client.update("@zerugiran esta estrenando su meccano y seguro no va a dormir hoy.. :D - cc @" + tweet['from_user']) end |
Una de las cosas que faltaron es la opción de poder almacenar los usuarios que encontré en una bd (sqlLite) para no repetirles en el envío de tweets.. Esto es solamente el ejemplo, muchas ideas se pueden desprender de esto.. 😀