InicioInfoProgramación: tu aplicación Twitter

Programación: tu aplicación Twitter

Info3/20/2012
Twitter es una red social de Microblogging, donde los mensajes enviados (tweets) constan de hasta 140 carácteres, pudiendo seguir y ser seguido por diferentes usuarios, que recibirán nuestras actualizaciones, o viceversa. Debido al reducido tamaño del mensaje a enviar, se ha hecho muy fácil de usar, por ello contamos con un volumen de información gigante siendo constantemente subido a Internet. Sin embargo, podemos desarrollar nuestra propia aplicación que se conecte y obtenga la información de Twitter, sin necesidad de acceder a la página web. En este post veremos una pequeña introducción al tema. ¿Porqué desarrollar una aplicación propia? Por defecto, las cuentas de Twitter se crean abiertas para todo el mundo, por lo que cualquier persona, sin necesidad de una cuenta, puede acceder a ella (es posible restringir el acceso, pero por lo general quedan públicas). Además, existe la posibilidad de acceder a una linea de tiempo pública, donde teóricamente se publican todos los tweets de cuentas públicas (Debido a la gran cantidad de tweets que se suben por segundo, es imposible obtener / mostrar todos). 1) El simple hecho de desarrollar nuestra aplicación, por fuera de la página de Twitter, que se vea y maneje como queramos. 2) Investigación : resulta posible obtener un enorme volumen de información en poco tiempo, dado que la mayoría de las cuentas quedan públicas, siendo posible guardarla en nuestra computadora y darle el procesamiento que queramos (en otro post haré una explicación sobre las técnicas que podrían aplicarse al texto). ¿Qué necesito? * Conocimientos básicos de programación, y de Java * Existen diferentes librerías que pueden usarse para realizar la conexión a Twitter, en particular trataremos twitter4j. Página oficial: http://twitter4j.org -> de ahí mismo se puede bajar y consultar algunos ejemplos, los DOCS, etc. Si trabajamos bajo algún IDE (Netbeans, Ecplise, etc.), simplemente debemos agregar el .jar correspondiente al proyecto y quedará integrado. Limitaciones Nos encontramos limitados por la cantidad de consultas que podemos realizar por hora a Twitter, estando actualmente en 350. Existe la posibilidad de pedir una cuenta VIP, que permite entre 10 mil y 20 mil consultas, pero dicho proceso requiere una autorización especial de Twitter, que no siempre resulta fácil de acceder (no la dan porque sí, debe tenerse algún motivo fuerte y convincente). Tampoco podemos obtener toda la información completa, es decir, si un usuario tiene subidos 15 mil tweets, no habrá forma de obtenerlos todos (Debemos también pensar en el tiempo que tardaríamos en verlos todos o el espacio en disco que podríamos necesitar para almacenarlos). En general, pueden obtenerse directamente los 20 más recientes. Si quiero acceder a los seguidores de un usuario, sólo podré acceder hasta 5000 por vez, pudiendo separar en páginas el contenido. Empezar a trabajar Primero, debemos registrar la aplicación de modo que pueda tener acceso a una cuenta de Twitter. Este proceso se hace debido a que el acceso a Twitter no se hace más ingresando nombre de usuario y contraseña, se utilizan códigos especiales creados. Este proceso se conoce como OAuthorization . Se hace desde https://dev.twitter.com/ Elegimos la opción "Create an app" Debemos loguearnos con nuestra cuenta de Twitter. Cuando ya estés logueado, debemos agregar cierta información respecto a nuestra aplicación y aceptar las condiciones. Cuando validemos el proceso, aceptamos y seguimos. Este paso nos entrega 2 datos importantes "ConsumerKey" y "ConsumerSecret" Estamos en condiciones de obtener el "AccessToken", con el cual validaremos el acceso de la aplicación a la cuenta de Twitter asociada. * Desde código con Twitter4j public static void main(String args[]) throws Exception{ Twitter twitter = new TwitterFactory().getInstance(); // Maneja las consultas a Twitter (conservar referencia) twitter.setOAuthConsumer("[consumer key]", "[consumer secret]" ) ; // Seteamos los valores adecuados RequestToken requestToken = twitter.getOAuthRequestToken(); //Para hacer el pedido de AccessToken AccessToken accessToken = null; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //Lee desde teclado while (null == accessToken) { //Persiste hasta encontrar un código válido System.out.println("Abri el siguiente URL y garantizá acceso a tu cuenta" ) ; System.out.println(requestToken.getAuthorizationURL()); //Página que debo abrir para obtener el código System.out.print("Ingresá el número de PIN" ) ; //Ingresar el número que vemos en la URL abierta String pin = br.readLine(); try{ if(pin.length() > 0){ accessToken = twitter.getOAuthAccessToken(requestToken, pin) ; //Obtiene el token }else{ accessToken = twitter.getOAuthAccessToken(); } } catch (TwitterException te) { if(401 == te.getStatusCode()){ System.out.println("No se pudo obtener el token " ) ; }else{ te.printStackTrace(); } } } //Para que los datos persistan storeAccessToken(twitter.verifyCredentials().getId() , accessToken); -> Guardar la información, en caso de guardar para varias cuentas, podemos obtener el ID asociado a la misma. Internamente, Twitter se maneja con números enteros para cada cuenta. Este fragmento de código, seteando los datos de la cuenta "ConsumerKey" y "ConsumerSecret", nos permite obtener el AccessToken. Esto es necesario hacerlo sólo una vez, por lo que podría guardarse a un archivo y setearlo la próxima vez que usemos la aplicación. En pantalla veremos un cuadro que nos pedirá que ingresemos a una página que nos dará los datos necesarios, luego los ingresamos y si todo sale bien, estaremos accediendo a Twitter. Se repite hasta que se tenga una validación (está dentro de un bucle while). public static void main(String args[]) thrwos Exception{ //Teniendo el código guardado en algún lado TwitterFactory factory = new TwitterFactory(); AccessToken accessToken = loadAccessToken(Integer.parseInt(args[0])); //Cargo la información Twitter twitter = factory.getOAuthAuthorizedInstance"[consumer key]", "[consumer secret]", accessToken); //Esta última linea nos permite obtener la referencia a Twitter que usaremos para consultar } private static AccessToken loadAccessToken(int useId){ String token = // Cargarlo del archivo donde se tenga guardado String tokenSecret = //Cargarlo del archivo donde se tenga guardado return new AccessToken(token, tokenSecret); //Devuelvo una instancia generada con la info que tenía guardada } Una vez logueados en Twitter, teniendo la referencia a la instancia creada, podremos realizar una gran variedad de consultas. ¿Qué puedo hacer? 1) Buscar Tweets de un usuario -> se puede usar la clase Query y hacer una consulta que debería otorgar más de 20 resultados, es decir, es posible obtener más tweets de un mismo usuario (creo es posible hasta 160 resultados). Twitter twitter = new TwitterFactory().getInstance(); Query query = new Query("source:twitter4j username" ) ; //username : nombre del usuario que se quiere consultar QueryResult result = twitter.search(query); //Resultado del query realizado for (Tweet tweet : result.getTweets()) { //Muestra los tweets : nombre usuario + texto System.out.println(tweet.getFromUser() + ":" + tweet.getText()); } * Status y Tweet son muy similares. 2) Actualizar estado Twitter twitter = new TwitterFactory().getInstance(); Status status = twitter.updateStatus(latestStatus); //Subir el status deseado, debe tener el texto seteado //Seguramente la clase Status tiene un método setText(texto) que debe llamarse antes de updateStatus System.out.println("Se actualizó a [" + status.getText() + "]." ) ; * http://twitter4j.org/en/javadoc/twitter4j/Status.html -> javadoc de la clase Status 3) Obtener el ID de un usuario a partir del nombre de usuario (ScreenName) * Usar el método showUser(String:nombre usuario) de la instancia de Twitter creada. Se obtiene un objeto del tipo "User" que contiene toda la información del usuario. * http://twitter4j.org/en/javadoc/twitter4j/User.html -> JavaDoc de la clase User viendo todo lo que se puede hacer 4) Obtener timelines de amigos Twitter twitter = new TwitterFactory().getInstance(); List statuses = twitter.getFriendsTimeline(); System.out.println("Mostrando timelines de amigos" ) ; for (Status status : statuses) { //Muestra todo los tweets, también llamados "Status" System.out.println(status.getUser().getName() + ":" + status.getText() ) ; //Imprime el texto con el nombre de usuario asociado } http://twitter4j.org/en/javadoc/twitter4j/Status.html -> javadoc de la clase Status 5) Obtener seguidores de un usuario -> se obtienen hasta 5000 por página, se puede setear un cursor para ir obteniendo la información. *Usar método getFollowersIDs(nombre de usuario, cursor) de Twitter-> cursos es del tipo long, nombre de usuario es String * Usar getFollowersIDs(ID usuario, cursor) -> en vez del nombre de usuario, ingreso el ID asociado Cambiando "Followers" por "Friends" se obtiene la información de la gente que se sigue, las funciones son similares. 6) Obtener la línea de tiempo pública * Usar el método getPublicTimeline() de la clase Twitter y se obtiene un ResponseList, sobre la cual podremos iterar (en los ejemplos anteriores está como se hace) y obtener todos los últimos 20 mensajes (Tener en cuenta que tarda un cierto tiempo en actualizarse, tarda 60 segundos en cambiar completamente). Todas las funciones de la clase Twitter en http://twitter4j.org/en/javadoc/index.html * Al obtener las timelines de usuarios, obtenemos los tweets enviados por el usuario en particular, pero NO se obtienen todos los que aparecen en su perfil. Básicamente, vemos lo que sube a Twitter pero no tenemos acceso directo a lo que suben sus seguidos. * Existen métodos especiales para obtener retweets (mensajes enviados por una persona que otra persona reenvía) Los ejemplos son muy básicos (varios están sacados de la página de Twitter4j (me da error al poner la fuente) ), pero existen gran cantidad de posibilidades : crear amistades, seguir gente, enviar mensajes directos, trends, etc. Es una excelente forma de obtener un gran volumen de información para algún fin en particular. Este post pretende ser una pequeña introducción a lo que se puede hacer. Teniendo en claro cómo realizar el login, el resto es simplemente informarse sobre las funciones que provee el API e ir probando. ¿Qué errores pueden surgir? Más comunes * Se hayan acabado las consultas -> (creo) código HTTP 403 . En este caso no queda otra que esperar. Hasta hace un tiempo, cambiar la IP alcanzaba (de ser posible), ahora no cuento con esa posibilidad así que no sé si funcionará. * No tener acesso, sin autorización -> código HTTP 401. Puede haber fallado la obtención del token, por eso no se tiene acceso válido. * Información no encontrada -> error 404 * Twitter saturado / no disponible -> error 503
Datos archivados del Taringa! original
0puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
6visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

C
Usuario
Puntos0
Posts3
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.