OAuth Twitter Ruby

http://www.iconarchive.com/show/tweetscotty-icons-by-lboi/twitter-bot-icon.html

Twitter bot en ruby

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.. 😀

Co-fundador de Qbit Mexhico, usuario de linux, Developer en tecnologías web.. Nicaragüense, centro en basketball, primer centro en rugby y pintor los fines de semana. Ortögrafo y ambientalista psicológico (de escritorio).. ese soy yo!

Si te ha servido compártelo y difunde nuestro blog..

Facebook Twitter LinkedIn Google+ Flickr YouTube Skype 

Compartir en...Tweet about this on TwitterPin on Pinterest0Share on LinkedIn0Share on Google+0Share on Facebook0