Twitter: conversaciones gráficas con Python (III)

Obtener las claves de Twitter

Esta es la tercera entrada de este blog, dedicado a usar el API de Twitter y las librerías de Python para generar una imagen de la conversación que tenga un formato gráfico:

nolla

Tengo que recuperar los tuits con el API de Twitter y usar Python para filtrar la información, crear una lista ordenada y generar un gráfico con los nodos.

El API de Twitter exige desde 2013 el uso de autenticación de usuario. Por ello, lo primero que necesitarás es, aparte de tener cuenta en Twitter, registrar tu futura aplicación y generar las claves de autenticación necesarias. Esto es lo que te explico en este post.

Regístrate como usuario

Lo primero es tener una cuenta en Twitter. Voy a dar por supuesto que este paso ya lo tienes superado. Si no, solo necesitas un nombre, un correo y una contraseña.

registro en twitter
Registro en Twitter

Da de alta una aplicación

Twitter te exige que des de alta tu aplicación para poder acceder a sus datos. Te pedirá un nombre y una descripción. También una URL (te la pide, pero no tiene por qué ser real porque no la usaremos aquí). Puedes opcionalmente decir qué permisos tendrá la aplicación en Twitter, algo importante porque para Twitter la aplicación actúa en tu nombre, pero que tampoco es esencial aquí.

Para dar de alta una nueva aplicación, entra en apps.twitter.com:

twitter apps
Página principal de Twitter Apps

Pulsa el botón Create New App.

alta app twitter
Dando de alta una aplicación en Twitter

Los datos obligatorios que nos piden son nombre , descripción y website.

Nombre es un identificador único. No podrás usar Mi aplicación porque ese nombre ya está en uso, así que tendrás que cavilar un poco más. Tienes 32 caracteres de espacio.

Descripción es un espacio más amplio y de formato libre para describir qué hace tu aplicación.

Website es el sitio donde los usuarios acceden para descargar tu aplicación. Tiene que tener formato de URL válida: http://www.holaholahola.es, por ejemplo. El campo es obligatorio, pero Twitter no valida esa URL, así que cualquier cosa vale en nuestro caso. Aquí no vamos a publicar, sólo queremos tener una autorización para acceder al API de Twitter.

A continuación viene un texto explicando las normas (que tendrías que leer), un checkbox de aceptación de las normas y el botón Create your Twitter application, que debes pulsar para continuar.

Obtener las claves de autenticación

Tendrás que tener ahora la página de administración de aplicaciones de Twitter.

administración apps
Panel de administración de aplicaciones Twitter

Verás que aquí se usan el nombre, la descripción y la URL introducidas antes.

Hay tres pestañas más:

  • Settings, que permite cambiar los datos que ya hemos introducido.
  • API Keys, que sirve para crear las claves OAuth que necesitarás (ésta es la importante)
  • Permissions, donde defines si la aplicación leerá sólo o también podrá mandar tuits y mensajes directos.

Si entras en API Keys, en la parte superior verás dos códigos, que son la mitad de lo que necesitamos para autenticarnos. El primero, API Key, es el código que identifica la aplicación, y el segundo, API Secret, una suerte de contraseña que nadie debe de conocer (yo te la muestro porque borraré la aplicación en cuanto termine el post ;)).

9a

En la parte inferior de la página (igual tienes que desplazarte) verás lo siguiente:

pre token

Puesto que aún no tenemos el resto de la información para OAuth, pulsa el botón para generarla. Volverá a cargarse la página, pero no verás nada nuevo porque el proceso tarda unos instantes. Twitter te avisa:

api token wait

Al cabo de un rato, cuando refresques el navegador, verás que en la parte de abajo de la página ya han aparecido unos códigos nuevos:

api keys 2

Access token y Access token secret son las otras dos claves necesarias para autenticarse. Los detalles del funcionamiento de OAuth están fuera del ámbito de este post, de modo que vamos a centrarnos en copiar estas cuatro claves para usarlas en Python.

Probar de nuevo en Python

Abre un bloc de notas y copia las cuatro claves en cuatro lineas. Ten en cuenta que en la librería se invocan en un orden distinto a como las vemos en Twitter: primero las dos claves de token (líneas 3 y 4) y despues las del consumer (líneas 1 y 2):

consumer_key = gsIT85KKCwn96YZdEm5i3uGtq
consumer_secret = SvWhbZNUZIx9Kz3sMuMaditk3phMyhw2tLHrrxXLX7SaYm9Ntm
access_token = 93826987-b17gKPaq4a5sNtbu3PfXPHdBcCm4ff533PSlMKGMV
access_token_secret = wZZ5VUOPzOy1QABHiA4gUQEfrRoMxn4qlewNTJ1yxhZem

Guarda el fichero con un nombre cualquiera, por ejemplo api_keys.txt. Así no tendrás que volver a apps.twitter.com a recordarlas. Y guarda el fichero en lugar seguro (esto se dice siempre, pero me voy a ahorrar las admoniciones paranoicas habituales).

Es el momento de ver si la librería de acceso a Twitter que nos falló en el post anterior funciona ahora que tenemos las claves para acceder a Twitter. Abre Python y ve escribiendo los siguientes comandos:

>>> token = '93826987-b17gKPaq4a5sNtbu3PfXPHdBcCm4ff533PSlMKGMV'
>>> token_key = 'wZZ5VUOPzOy1QABHiA4gUQEfrRoMxn4qlewNTJ1yxhZem'
>>> con_secret = 'gsIT85KKCwn96YZdEm5i3uGtq'
>>> con_secret_key = 'SvWhbZNUZIx9Kz3sMuMaditk3phMyhw2tLHrrxXLX7SaYm9Ntm'

Recuerda usar tus propias claves. Y escribirlas entre comillas, ya sean simples o dobles, para que Python interprete que son cadenas de texto.

Ahora esas cuatro variables contienen los valores para la autenticación que nos dio Twitter, y ya podemos ir con la librería de acceso a Twitter.

>>> token = "gsIT85KKCwn96YZdEm5i3uGtq"
>>> token = "93826987-b17gKPaq4a5sNtbu3PfXPHdBcCm4ff533PSlMKGMV"
>>> token_key = "wZZ5VUOPzOy1QABHiA4gUQEfrRoMxn4qlewNTJ1yxhZem"
>>> con_secret = "gsIT85KKCwn96YZdEm5i3uGtq"
>>> con_secret_key = "SvWhbZNUZIx9Kz3sMuMaditk3phMyhw2tLHrrxXLX7SaYm9Ntm"
>>>
>>> import twitter
>>> auth = twitter.OAuth(token, token_key, con_secret, con_secret_key)
>>> t = twitter.Twitter(auth=auth)
>>>

Verás que ningún comando devuelve nada, lo que es buena señal. Aunque no lo parezca, estamos autenticados en Twitter y podemos empezar a pedir información. Pero eso ya es para el próximo post.

Continuará...

¡No, hombre, no! ¿Cómo voy a dejarte así justo ahora? Vamos a pedir tu línea de tiempo, a ver qué sale.

>>> timeline = t.statuses.home_timeline()
>>> for tuit in timeline:
...      print(tuit['text'])

Ya tenemos (si todo ha ido bien) una conexión con Twitter autenticada y operativa.  ¡Y sólo en tres posts!

Para terminar, te comento: Twitter nos envía mucha más información que el texto. Prueba a ejecutar lo anterior sustituyendo print(tuit[‘text’]) por print(tuit) a secas. Bárbaro, ¿verdad? En el próximo post explico cómo desbrozar ese (aparente) caos de información. Hasta la próxima.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s