En este tutorial se explica de forma simple la configuración de twitter4j y un pequeño ejemplo de como crear un buscador de publicaciones en Twitter en Java utilizando el Api Twitter4j.
1. Configuración, para configurar Twitter4j es muy sencillo, el primer paso es descargar la dependencia de twitter4j. Para este ejemplo se utilizará la siguiente:
<dependency> <groupId>org.twitter4j</groupId> <artifactId>twitter4j-core</artifactId> <version>[4.0,)</version> </dependency>
Del mismo modo se agregará el plugin que define que se utilizará la versión 1.8 de java:
<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
El siguiente paso para completar la configuración es crear un archivo llamado twitter4j.properties y colocarlo en el folder src/main/resources como se muestra a continuación:
oauth.consumerSecret=yourConsumerSecret oauth.consumerKey=yourConsumerKey oauth.accessToken=yourAccessToken oauth.accessTokenSecret=yourAccessTokenSecret
Los valores a insertar en este archivo de propiedades se obtendrán creando una cuenta de desarrollador en la página https://apps.twitter.com/.
2. Crear lector de teclado, en el ejemplo se leerá la entrada del teclado el término a buscar en Twitter, para leer este valor se utilizará la clase QueryReader.java :
/** * */ package com.raidentrance.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * @author raidentrance * */ public class QueryReader { public static String readLine() throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(isr); return reader.readLine(); } public static String readLine(String message) throws IOException { System.out.print(message); return readLine(); } }
3. Crear un TwitterController, este controller permitirá realizar acciones sobre Twitter y Status, para este ejemplo se utiliza para realizar la búsqueda y para imprimir las publicaciones.
/** * */ package com.raidentrance.controller; import java.text.SimpleDateFormat; import java.util.List; import twitter4j.Query; import twitter4j.QueryResult; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; /** * @author raidentrance * */ public class TwitterController { private Twitter twitter; private SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); public TwitterController() { twitter = TwitterFactory.getSingleton(); } public List<Status> query(String query) throws TwitterException { QueryResult search = twitter.search(new Query(query)); List<Status> tweets = search.getTweets(); return tweets; } public void printStatus(Status status) { System.out.println("----------------------------------------------------------"); System.out.println(String.format("User [%s]", status.getUser().getScreenName())); System.out.println(status.getText()); System.out.println(sdf.format(status.getCreatedAt())); System.out.println(String.format("RT[%d] FAV[%d]", status.getRetweetCount(), status.getFavoriteCount())); System.out.println("----------------------------------------------------------"); } public void printStatus(List<Status> status) { for (Status tweet : status) { printStatus(tweet); } } }
4. Probando todo junto,a continuación se presenta la clase que integrará los componentes para realizar el buscador de Twitter:
/** * */ package com.raidentrance; import java.io.IOException; import java.util.List; import com.raidentrance.controller.TwitterController; import com.raidentrance.util.QueryReader; import twitter4j.Status; import twitter4j.TwitterException; /** * @author raidentrance * */ public class TwitterSearchApplication { public static void main(String[] args) throws IOException, TwitterException { TwitterController controller = new TwitterController(); String command = QueryReader.readLine("Query in twitter (quit for exit)->>"); while (!command.equals("quit")) { List<Status> result = controller.query(command); controller.printStatus(result); command = QueryReader.readLine("Query in twitter: "); } } }
5.- Salida, una vez que se ejecuta la aplicación se obtendrá un prompt como el siguiente:
Query in twitter (quit for exit)->>
En este se debe escribir el término que se desea buscar en Twitter y presionar enter. Una vez hecho esto se presentará la lista de resultados como se muestra a continuación y se volverá a imprimir el prompt para realizar una nueva búsqueda, esto se repetirá hasta que se escriba la palabra quit.
En este ejemplo se utilizó la palabra cerveza.
---------------------------------------------------------- User [MoisesEspinola] RT @elcosodelapizza: La cerveza sin alcohol se inventó para acompañar a las milanesas de soja y a una vida sin gracia. 21/09/2016 12:41:37 RT[1078] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [diario_noroeste] Diarionoroeste.es: Cerveza tipo Summer Ale: qué es y por qué se inventó https://t.co/lucys7LTVB 21/09/2016 12:41:27 RT[0] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [CarrieAdlertw] @kajalnapalm añadele una buena cerveza y te lo compro con los ojos cerrados 21/09/2016 12:41:20 RT[0] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [epistemiaetica] #BirraBat , #bi eta #hiru... hay que tomarse más de una cerveza para no alterarse con las preguntas de @oaranzabal ...sigo sorprendiéndome 😕 21/09/2016 12:41:18 RT[0] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [AgusComper] Que rica era la cerveza de ayer loco 21/09/2016 12:41:10 RT[0] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [LuisRamosRamos1] Beber cerveza sería más saludable que tomar leche, según estudio https://t.co/70JgpQEZXd 21/09/2016 12:41:07 RT[0] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [angie_posadas] RT @MisaelAstesano: @angie_posadas tendrías que estar tomando esa cerveza conmigo 21/09/2016 12:41:07 RT[1] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [edwardsensation] Hoy Miércoles Nueva Sesión De Boys And Gilrs En Deluxe High Class Desde las 20:00 Hrs Con Ofertas de Cerveza... https://t.co/K8trx5IA3E 21/09/2016 12:40:57 RT[0] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [JRS_RIVER] RT @Americoriver83: @GlodeVillegas @JRS_RIVER @Sergio3712ok @enriqueguzmn554 @NoreBelleza @DominguezRuben8 @laturcayug @ralphrod521 @hayvie… 21/09/2016 12:40:43 RT[1] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [Cele_Ga] Que lindo día para ahogarse en cerveza, caipiriña y demás 😋 🍻🍹🍸 21/09/2016 12:40:42 RT[0] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [edwardsensation] Hoy Miércoles Nueva Sesión De Boys And Gilrs En Deluxe High Class Desde las 20:00 Hrs Con Ofertas de Cerveza... https://t.co/8p4zp2HWmN 21/09/2016 12:40:41 RT[0] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [pili_neko] Acabo de probar la cerveza de mantequilla Es como los caramelos de cafe pero con algo de vainilla y gas... Me gusta https://t.co/IiwepQ5VZn 21/09/2016 12:40:37 RT[0] FAV[1] ---------------------------------------------------------- ---------------------------------------------------------- User [Fxbri] El día pide una buena cerveza bien fría 21/09/2016 12:40:35 RT[0] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [AyelenSlb] Que boludes hacen control de alcolemia para ir a las plazas y en un mes hacen fiesta de la cerveza en toda la plata todos los findes 21/09/2016 12:40:27 RT[0] FAV[0] ---------------------------------------------------------- ---------------------------------------------------------- User [Americoriver83] @GlodeVillegas @JRS_RIVER @Sergio3712ok @enriqueguzmn554 @NoreBelleza @DominguezRuben8 @laturcayug @ralphrod521 @hayvieramon hoy cerveza.jua 21/09/2016 12:40:25 RT[1] FAV[0] ----------------------------------------------------------
La información que se imprime es la siguiente:
- Nombre de usuario
- Texto de la publicación
- Fecha de publicación
- Número de RT y número de Favoritos
Puedes encontrar el código completo del ejemplo en el siguiente enlace:
https://github.com/raidentrance/twitter4j-example
Autor: Alejandro Agapito Bautista
Twitter: @raidentrance
Contacto:raidentrance@gmail.com
Muchas Gracias por compartir, sin embargo me esta arrojando el siguiente error cuando lo ejecuto en NetBeans.
si me puedes ayudar.. Gracias
BUILD FAILURE
————————————————————————
Total time: 07:57 min
Finished at: 2020-11-14T13:41:15-05:00
————————————————————————
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.5.0:exec (default-cli) on project twitter4j-example: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]
To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.
For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Me gustaMe gusta