Hace poco me había surgido la idea de hacer un script en Python para Twitter, con la idea de mantener un registro de las personas que me dieran unfollow. Ya había usado hace tiempo la librería de la que hoy vengo a hablar que es nada mas y nada menos que Tweepy una librería de Python para acceder a la API de Twitter.

Como casi todo en el fabuloso mundo del lenguaje de programación Python, Tweepy es relativamente intuitiva y de fácil uso. Lo primero que necesitamos es instalar la librería, que como la mayoría de librerías puedes instalar con pip o easy_install o usando el instalador desde el código fuente, el típico python setup.py install.

Instalación con pip:

pip search tweepy # para buscar si esta en los repositorios
pip install tweepy

Instalación con easy_install:

easy_install tweepy

Instalación desde código fuente:

python setup.py install

Nota: Necesitas permiso de super usuario para eso.

Este no esta pensado para ser un tutorial extenso o bastante detallado(debo admitir que yo mismo no es que tenga un conocimiento tan pronunciado sobre esta librería) sino mas bien una breve introducción, en todo caso la documentación oficial es buena.

Así que para empezar, tener en cuenta que necesitaras registrar tu app en Twitter, específicamente en este link, luego de registrarte y elegir los permisos correspondientes para tu app en API Keys puedes encontrar tu API key y API secret. Como cambiar permiso y demás, no es algo que explicare, supongo que esta bastante intuitivo la interfaz del Twitter Application Manager.

Una vez obtengas el API key y el API secret(en lo adelante consumer_key y consumer_secret, respectivamente) ya podemos iniciar con lo mas básico, que es la autenticación(claro, luego de import la librería con import tweepy):

consumer_key = raw_input("Introduzca el consumer_key >>> ")
consumer_secret = raw_input("Introduzca el consumer_secret >>> ")

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)

# Ahora necesitamos el access token para los permmisos
redirect_url = auth.get_authorization_url()
print "Puede obtener el access token en este link >>> ", redirect_url
verifier = raw_input("Introduzca el codigo verificador: ")

# Obtenemos y pasamos al objeto 'auth' el token con el codigo antes provisto
auth.get_access_token(verifier)

# Obtenemos un objeto api que necesitaremos para hacer los requests a Twitter
api = tweepy.API(auth)   # Pasando el objeto 'auth' como parámetro

Esa es una posible forma de hacerlo, obviamente no querrás introducir esos mismos datos cada vez que inicias la aplicación, por eso lo ideal seria guardar el access_token y el consumer_key así como el consumer_secret en un archivo o base de datos(no de fácil acceso a todo mundo, por seguridad), en ese caso para el access_token tendrías que setear su valor de esta manera:

auth.set_access_token(key, secret)

Si haces lo siguiente puedes obtener el key y el secret del token así:

acces_token = auth.get_access_token()
key = acces_token.key
secret = access_token.secret

De ahí almacenas esos datos en algún medio de persistencia(archivo, base de datos) y seteas cada vez esos valores conforme quieras.

Para ilustrar el uso de la librería procederé a hacer una especie de Hello World usando algunos ejemplos combinados de la documentación oficial:

import tweepy

consumer_key = raw_input("Introduzca consumer key >>> ")
consumer_secret = raw_input("Introduzca consumer secret >>> ")

# Autentificamos la app
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)

# Obtenemos autorización del usuario para acceder/usar su perfil desde nuestra app
redirect_url = aut.get_authorization_url()
print "Autorize esta app para usar su perfil en >>> ", redirect_url
verifier = raw_input("Ahora introduzca el codigo de verificación aquí >>> ")

# Seteamos la autorización
auth.get_access_token(verifier)

# Obtenemos nuestro objeto 'api'
api = tweepy.API(auth)

# Si quisiéramos obtener para guardar en algún lado el token de acceso
# podríamos obtenerlo así
# key = auth.access_token.key
# secret = auth.access_token.secret


# Ahora leamos nuestro timeline
public_tweets = api.home_timeline()
for tweet in public_tweets:
    print "[+] %s" % tweet.text

# Obteniendo información de un usuario en especifico
user = api.get_user('twitter')
print "Nombre publico o nick: %s" % user.scree_name
print "Cantidad de seguidores: %s" % user.followers_count
print " <<<<< LISTA DE AMIGOS >>>>>"
for friend in user.friends():
    print friend.screen_name

# Seguir a todo el que me sigue
for follower in tweepy.Cursor(api.followers).items():
    follower.follow()
    print "Ahora siguiendo a >>> %s" follower.screen_name

Algo muy útil que no se ilustra en el codigo anterior son los objetos Cursores para limitar la cantidad de resultados, por ejemplo en el codigo anterior para seguir a todo mundo podríamos haber limitado la cantidad de personas a seguir que nos devolviera el api a 10 de la siguiente manera:

for follower in tweepy.Cursor(api.followers).items(10)
    follower.follow

Muchas otras cosas se pueden hacer, buscar usuarios, como la búsqueda que se realiza en el mismo twitter con el botón buscar, navegar a través de su lista de amigos, sus fotos de perfil, websites, etc.. Cosas que podrían ser muy útil para practicar análisis de datos con Python.

Por el momento es todo, lo que puedan necesitar sobre esta api en la documentación oficial lo encuentran.

Shalom!

Referencias * Tweepy Documentation