Por un puñado de tweets

En los últimos días hemos visto el enorme revuelo que se montado por unos tweets publicados hace 4 años. Y lo peor de todo es que parece que ha desatado toda una moda de «arqueología social», buscando aquel tweet o aquella expresión que pudiera provocar una situación embarazosa. Pero, ¿como se hace esto? Vamos a hacer un sencillo ejemplo de cómo se puede, gracias a la magia de la programación, realizar esta labor «arqueológica».

Paso 1: Obtener las claves de la API de Twitter

Para poder acceder al streaming de Twitter, el primer paso es obtener las claves para poder llamar a su API desde programación. Es muy sencillo:

  • Accede a apps.twitter.com con tu cuenta de Twitter (si no tienes, puede ser un buen momento para crearla).»
  • Pulsamos el botón de «Create a new app»
  • Rellenamos el formulario, aceptamos los términos y pinchamos en «Create yout Twitter application».
  • En la siguiente página, en la pestaña API keys, tendremos los datos que necesitamos, que son 3:
    • API keys
    • API secret
    • Y el access token, que se obtiene pulsando el botón que aparece en la parte inferior.

Paso 2: Conexión y descarga de datos

Para poder gestionar el streaming de tweets, lo mejor es utilizar una librería. En este caso, vamos a utilizar Tweepy. Su instalación es muy sencilla:

pip install tweetpy

Una vez instalada, el siguiente código nos dará lo que necesitamos para conectarnos a Twitter:

# Importamos los metodos necesarios de tweepy
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
import tweepy
import csv

#Variables that contains the user credentials to access Twitter API
access_token = ""
access_token_secret = ""
consumer_key = ""
consumer_secret = ""

if __name__ == '__main__':

 #This handles Twitter authetification and the connection to Twitter Streaming API
 auth = OAuthHandler(consumer_key, consumer_secret)
 auth.set_access_token(access_token, access_token_secret)
 stream = Stream(auth, l)

 api = tweepy.API(auth)

Por defecto, únicamente podríamos bajar 200 tweets como máximo, a través del siguiente comando:

new_tweets = api.user_timeline(screen_name = screen_name,count=200)

Desde el punto de vista «arqueológico», esto tiene poco valor. Afortunadamente, hay pequeños scripts que nos ayudan a solventar estos problemas:

#keep grabbing tweets until there are no tweets left to grab
while len(new_tweets) > 0:
 print "getting tweets before %s" % (oldest)

 #all subsiquent requests use the max_id param to prevent duplicates
 new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id=oldest)

 #save most recent tweets
 alltweets.extend(new_tweets)

 #update the id of the oldest tweet less one
 oldest = alltweets[-1].id - 1

 print "...%s tweets downloaded so far" % (len(alltweets))

Y con esto, tenemos recopilados todos los tweets. En la próxima entrega veremos como podemos hacer búsquedas en ellos, y empezar a buscar.

Borja Sanz
Acerca de
Investigador de S3lab
Expertise: Malware, Artifical Intelligence, Mobile Security, Android

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.