ruby twitter bot

Post on 28-Jan-2018

69 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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