Analizando Twitter I: Obteniendo una muestra de ejemplo con Java

En esta primera entrada sobre Twitter, hablaremos brevemente sobre como poder conectarse al servicio usando Java.

Twitter es una red social de microblogging donde todo lo que se escriba por defecto es público, esto ha llevado a personas a expresar sus opiniones sobre diversos temas en Twitter, y a muchos investigadores trabajar con la red social para distintos tipos de análisis. Dado el énfasis público de Twiiter, en el WIC tenemos OpinionZoom y SONAMA como proyectos que están analizando esta red social.

Para poder utilizar las APIs de Twitter, es necesario crear una aplicación en la página que Twitter tiene para ello, lo que nos otorga la credencial compuesta por Consumer Key, Consumer Key Secret, Access Token y Access Token Secret. Ya con nuestra credencial podemos conectarnos al servicio de Twitter y comenzar a realizar consultas a las APIs para extraer información. Existen distintas librerías que facilitan el uso de la API en algunos lenguajes; Twitter tiene una lista de recomendación, de la cual usaremos Twitter4j.

Como primer paso, es necesario crear un objeto de configuración al cual se le asignan los valores de la credencial.

ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true).setOAuthConsumerKey("----------")
            .setOAuthConsumerSecret("----------")
            .setOAuthAccessToken("----------")
            .setOAuthAccessTokenSecret("----------");

Después, es necesario iniciar un streamer con la configuración recién hecha.

TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();

Posteriormente, creamos un listener, que nos permetirá escuchar los tweets que van llegando y modificar lo que haremos con ellos. En este ejemplo solo se imprimen.

              StatusListener listener = new StatusListener() {
                  @Override
                  public void onStatus(Status status) {
                      System.out.println(status.getUser().getScreenName() +": "+status.getText());
                  }
                  @Override
                  public void onException(Exception ex) {
                      ex.printStackTrace();
                  }
                  @Override
                  public void onDeletionNotice(StatusDeletionNotice arg0) {
                      // TODO Auto-generated method stub
                  }
                  
                  @Override
                  public void onScrubGeo(long arg0, long arg1) {
                      // TODO Auto-generated method stub
                  }
                  
                  @Override
                  public void onStallWarning(StallWarning arg0) {
                      // TODO Auto-generated method stub
                  }
                  
                  @Override
                  public void onTrackLimitationNotice(int arg0) {
                      // TODO Auto-generated method stub
                  }
              };

Luego, asignamos el escuchador a nuestro stream

twitterStream.addListener(listener);

Para finalmente, activar la muestra de ejemplo de Tweets.

twitterStream.sample();

Esta muestra nos sirve para saber que todas las conexiones están funcionando. El stream de Twitter no puede ser alterado cuando se pide la muestra, pero es posible entregar parámetros al utilizar distintos filtros. Los distintos filtros, y su uso, serán vistos en otra oportunidad.

El código completo del streaming de muestra es el siguiente:

import twitter4j.StallWarning;
import twitter4j.Status;
import twitter4j.StatusDeletionNotice;
import twitter4j.StatusListener;
import twitter4j.TwitterStream;
import twitter4j.TwitterStreamFactory;
import twitter4j.conf.ConfigurationBuilder;

public class SampleStream {
      public static void main(String[] args) {   
              ConfigurationBuilder cb = new ConfigurationBuilder();
              cb.setDebugEnabled(true).setOAuthConsumerKey("---------")
                      .setOAuthConsumerSecret("---------")
                      .setOAuthAccessToken("---------")
                      .setOAuthAccessTokenSecret("---------");
            TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();
              StatusListener listener = new StatusListener() {
                  @Override
                  public void onStatus(Status status) {
                      System.out.println(status.getUser().getScreenName() +": "+status.getText());
                  }
                  @Override
                  public void onException(Exception ex) {
                      ex.printStackTrace();
                  }
                  @Override
                  public void onDeletionNotice(StatusDeletionNotice arg0) {
                      // TODO Auto-generated method stub
                  }
                  
                  @Override
                  public void onScrubGeo(long arg0, long arg1) {
                      // TODO Auto-generated method stub
                  }
                  
                  @Override
                  public void onStallWarning(StallWarning arg0) {
                      // TODO Auto-generated method stub
                  }
                  
                  @Override
                  public void onTrackLimitationNotice(int arg0) {
                      // TODO Auto-generated method stub
                  }
              };
            twitterStream.addListener(listener);
            twitterStream.sample();
    }
}
Publicado en Guías y etiquetado , , , .

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *