viernes, 25 de octubre de 2013

Trabajando con Python, la API v1.1 de Twitter y MongoDB (Parte 2)

En el artículo anterior vimos como obtener información de nuestra cuenta de twitter atacando a la API v1.1. Hoy vamos a completar el ejemplo insertando nuestros datos en una base de datos MongoDB.
Lo primero que tenemos que tener a mano es nuestro es el script de creamos el otro día, podéis descargarlo desde aqui. También necesitamos los siguientes parámetros para conectar al servidor de MongoDB

  • Servidor donde tenemos alojado MongoDB, en nuestro ejemplo será localhost
  • Puerto por el que estableceremos conexión.
  • Nombre de la Base de datos que crearemos para este ejemplo.
  • Usuario con el que estableceremos conexión a la base de datos.
  • Contraseña con la que nos autenticaremos.
  • Nombre de la Colección donde almacenaremos los datos.

Ahora en el script vamos a realizar lo siguiente:

Vamos a crear un procedimiento llamado InsertUser y le vamos a pasar como parámetro una variable que contendrá el documento que vamos a insertar, en el vamos a establecer la conexión con MongoDB y vamos a insertar el documento en la base de datos que hemos creado llamada twitter y la colección TwitterInformation.
def InsertUser(document):
   StringConnection = 'mongodb://USUARIO:CONTRASEÑA@localhost:27017/twitter';
   # Establecemos la conexion con el servidor
   client = MongoClient(StringConnection);
   # Base de datos con la que vamos a trabajar
   db = client.twitter;
   # Nuestra colección es llamada TwitterInformation
   collection = db.TwitterInformation;
   # Insertamos el documento con los datos recibidos de GetFriendsInformation
   collection.insert(document);
   print 'Registro insertado correctamente'
En el procedimiento GetFriendsInformation, vamos a realizar una serie de cambios, anteriormente mostrabamos por pantalla los datos obtenido de cada usuario de twitter que sigue a nuestra cuenta. Ahora vamos a formar un documento con dicha información, lo siguiente será llamar al procedimiento InsertUser pasándole dicho documento como argumento, quedaría de la siguiente forma:
# Procedimiento para mostrar los datos de cada amigo seguido en Twitter 
def GetFriendsInformation(user, api):
   # Obtenemos el listado de de amigos del usuario pasado
   TwitterFriends = api.GetFriends(screen_name=user);
 
   # Por cada amigo vamos a mostrar la informacion que desemos
   for Friends in TwitterFriends:
      # Generamos los documentos con los datos obtenidos.
      document = { 'screen_name': Friends.screen_name, 
        'followers_count':Friends.followers_count,
     'friends_count': Friends.friends_count, 
     'statuses_count': Friends.statuses_count 
                 }
       
      # Llamada al procedimiento para insertar los documentos
      InsertUser(document);
El script al completo os lo podéis descargar desde aquí y quedaría de la siguiente forma:
from pymongo import MongoClient
import twitter

# Datos de autenticacion
OAUTH_TOKEN='Rellenar con vuestros datos';
OAUTH_SECRET='Rellenar con vuestros datos';
CONSUMER_KEY='Rellenar con vuestros datos';
CONSUMER_SECRET='Rellenar con vuestros datos';

# Conexion a la API
api = twitter.Api(consumer_key=CONSUMER_KEY,
           consumer_secret=CONSUMER_SECRET,
           access_token_key=OAUTH_TOKEN,
           access_token_secret=OAUTH_SECRET);

# Procedimiento para mostrar los datos de cada amigo seguido en Twitter. 
def GetFriendsInformation(user, api):
   # Obtenemos el listado de de amigos del usuario pasado
   TwitterFriends = api.GetFriends(screen_name=user);

   # Por cada amigo vamos a mostrar la informacion que desemos
   for Friends in TwitterFriends:
      # Generamos los documentos con los datos obtenidos.
      document = { 'screen_name': Friends.screen_name, 
     'followers_count':Friends.followers_count,
     'friends_count': Friends.friends_count, 
     'statuses_count': Friends.statuses_count }
       
      # Llamada al procedimiento para insertar los documentos
      InsertUser(document);
   
def InsertUser(document):
   StringConnection = 'mongodb://USUARIO:CONTRASEÑA@localhost:27017/twitter';
   # Establecemos la conexion con el servidor
   client = MongoClient(StringConnection);
   # Base de datos con la que vamos a trabajar
   db = client.twitter;
   # Nuestra colección es llamada TwitterInformation
   collection = db.TwitterInformation;
   # Insertamos el documento con los datos recibidos de GetFriendsInformation
   collection.insert(document);
   print 'Registro insertado correctamente'

# Llamada al procedimiento para obetener los datos del usuario HispaBigData
GetFriendsInformation('hispabigdata', api);
Como podéis observar con pocas lineas de código, estamos obteniendo información de las cuentas de twitter y almacenándola en una base de datos NoSQL. Esto es un ejemplo bastante sencillo, ahora está en vuestra imaginación hasta donde podéis llegar para analizar todos los datos que nos ofrece la API v1.1 twitter.

No hay comentarios:

Publicar un comentario