ruby twitter bot
Post on 28-Jan-2018
69 Views
Preview:
TRANSCRIPT
Julián R. Figueroa | @unmultimedio | julian@liztum.com
Ruby Twitter Bot 101Lleva tus cuentas de Twitter al siguiente nivel
Julián R. Figueroa | @unmultimedio | julian@liztum.com
Disclaimer 1:Hay ¡muchos!
Una búsqueda sencilla en github
+80,000 ‘twitter’ (API, interface)+6,400 ‘twitter bot’ (py, js, rb)+90 ‘twitter bot ruby’
Julián R. Figueroa | @unmultimedio | julian@liztum.com
Disclaimer 2:Basado en…
Publicación existente en CodeByCodes:http://www.codebycodes.com/blog/2015/08/31/creating-a-simeple-twitter-bot-with-ruby
#UnBuenLibroEnRubyBogota1. Usa el hashtag en un tweet + mensaje (opcional) + media (opcional)
2. Ver respuesta de @unmultimedio3. RT de la respuesta (si te gusta la recomendación)
4. Repetir
liztum.com fb.com/liztum twitter.com/liztum
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
Requerimientos iniciales
1. Ruby +2.02. Gema oficial “Twitter”
(http://www.rubydoc.info/gems/twitter/file/README.md)
3. Documentación API REST Twitter (https://dev.twitter.com/rest/reference)
Limitaciones:
● Igual 140 char● Búsqueda por índice 1
semana● Uso penalizable
○ 150 logged out○ 350 authenticated○ ~400 favs (@liztum)
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
Autorizar aplicación Twitter
1. Crea una cuenta en Twitter2. Completa información básica3. Verifica número telefónico
a. Usa el app (SMS, Llamada)
4. Ve al sitio de aplicaciones de Twitter (https://apps.twitter.com/)
5. Crea una nueva aplicación6. Genera credenciales de acceso7. Copia los valores a local (Trátalos
como contraseña)
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
Hello World# In your terminal
gem install twitter
# bot.rb
require 'Twitter'
@client = Twitter::REST::Client.new do |config|
config.consumer_key = your_own_consumer_key
config.consumer_secret = your_own_consumer_secret
config.access_token = your_own_access_token
config.access_token_secret = your_own_access_token_secret
end
# Send a tweet
@client.update( 'Hello Ruby World, from Terminal' )
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
# Send a tweet
@client.update( 'Hello World, from
Terminal')
# Search (within 1 week)
@client.search(query, options).take(amount)
# Fav (Like) a tweet
@client.favorite(tweet)
# Basic retweet
@client.retweet(tweet)
Métodos básicos# Classic quote retweet
@client.update( "RT
@#{tweet.user.screen_name}: #{tweet.text}" )
# New quote retweet
@client.update( "¡Hey! #{tweet.url.to_s}" )
# Reply a tweet
@client.update(
"@#{tweet.user.screen_name} ¡Hey!" ,
in_reply_to_status_id: tweet.id
)
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
Search Options
● :since_id (Integer) — ID más grande (más reciente) que el parámetro.● :max_id (Integer) — ID más pequeño (más antiguo) o igual al
parámetro.● :geocode (String) — Radio (km/mi) de una latitud/longitud.
○ 4.753,-74.113,1150km
● :lang (String) — Idioma (ISO 639-1).○ es
● :locale (String) — Idioma de la búsqueda.○ en
● :result_type (String) — Tipo preferido de resultados.○ mixed | recent | popular
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
def auto_fav(query)
return if query.empty?
tweets = @client.search(query).take(50)
tweets.each do |tweet|
@client.favorite(tweet)
end
end
FavBot
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
def auto_fav(query, options: {}, amount: 50)
return if query.empty?
faved = 0
tweets = @client.search(query, options).take(amount)
tweets.each do |tweet|
@client.favorite(tweet)
faved += 1
puts "Faved(@#{tweet.user.screen_name}): #{tweet.text}"
end
puts "Faved #{faved} tweets."
end
FavBot
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
FavBot
def auto_fav(query, options: {}, amount: 50, skip: true, one_per_query: true)
return if query.empty?
faved = 0
faved_users = []
tweets = @client.search(query, options).take(amount)
tweets.each do |tweet|
if skip && @followers.include?(tweet.user.id)
puts "Skipped(@#{tweet.user.screen_name}): #{tweet.text}"
next
end
if one_per_query && faved_users.include?(tweet.user.id)
puts "Skipped(@#{tweet.user.screen_name}): #{tweet.text}"
next
end
@client.favorite(tweet)
faved_users << tweet.user.id
faved += 1
puts "Faved(@#{tweet.user.screen_name}): #{tweet.text}"
end
puts "Faved #{faved} tweets."
end
Julián R. Figueroa | @unmultimedio | julian@liztum.com
Revisión código propio
Revisión #UnBuenLibroEnRubyBogota
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
¡Give me the code!
● Los métodos expuestos● Protección de llaves (GIT)● Auto fav (@liztum y @unmultimedio)● Método recomendaciones de libros● Instrucciones básicas
Repo bajo licencia GNU:
https://github.com/unmultimedio/ruby-twitter-bot
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
Próximos pasos
1. “Applicacionar”, ¿Rails?, ¿Sinatra?2. Sistema de usuarios, AutoLoad cuenta, autorizar aplicación pública3. Estabilizar, control de errores (140 char, API Limit, …)4. Integrar
a. Exponer como Saasb. Integrar en aplicaciones propiasc. Iniciar proyecto OpenSource
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
TwitterBot: Posibilidades
● Growth Hacking (cuentas personales, cuentas empresariales)○ Seguimiento de hashtags, cuentas, ubicaciones
● SaaS de automatizar Twitter● ‘Engagement’ con la audiencia● Responder automáticamente las menciones● Conexión con apps propias
○ “Share on twitter”
● Analizador de Hashtag(s) para eventos● Concursos basados en Twitter● …
Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota
TwitterBot: Posibilidades
visibletweets.com
walls.io
tweetbeam.com
tweetfavy.com
hashtracking.com
Q&A
top related