ruby twitter bot

19
Julián R. Figueroa | @unmultimedio | [email protected] Ruby Twitter Bot 101 Lleva tus cuentas de Twitter al siguiente nivel

Upload: julian-r-figueroa

Post on 28-Jan-2018

69 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Ruby twitter bot

Julián R. Figueroa | @unmultimedio | [email protected]

Ruby Twitter Bot 101Lleva tus cuentas de Twitter al siguiente nivel

Page 2: Ruby twitter bot

Julián R. Figueroa | @unmultimedio | [email protected]

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’

Page 3: Ruby twitter bot

Julián R. Figueroa | @unmultimedio | [email protected]

Disclaimer 2:Basado en…

Publicación existente en CodeByCodes:http://www.codebycodes.com/blog/2015/08/31/creating-a-simeple-twitter-bot-with-ruby

Page 4: Ruby twitter bot

#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

Page 5: Ruby twitter bot

liztum.com fb.com/liztum twitter.com/liztum

Page 6: Ruby twitter bot

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)

Page 7: Ruby twitter bot

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)

Page 8: Ruby twitter bot

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' )

Page 9: Ruby twitter bot

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

)

Page 10: Ruby twitter bot

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

Page 11: Ruby twitter bot

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

Page 12: Ruby twitter bot

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

Page 13: Ruby twitter bot

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

Page 14: Ruby twitter bot

Julián R. Figueroa | @unmultimedio | [email protected]

Revisión código propio

Revisión #UnBuenLibroEnRubyBogota

Page 15: Ruby twitter bot

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

Page 16: 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

Page 17: Ruby twitter bot

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● …

Page 18: Ruby twitter bot

Julián R. Figueroa | @unmultimedio | #UnBuenLibroEnRubyBogota

TwitterBot: Posibilidades

visibletweets.com

walls.io

tweetbeam.com

tweetfavy.com

hashtracking.com

Page 19: Ruby twitter bot

Q&A