TweetJMx

Estrenando el blog
Desde hace algunos meses me he vuelto adicto a twitter, asi que ayer que tuve un tiempo libre me puse a escribir un cliente, mientras estuve estudiando la documentación twitter4j-2.2.1 me vinieron muchas ideas a la cabeza, pero siempre es mas facil y rapido empezar en la consola.
La secuencia de acceso es simple

  • Se registra la aplicación en twitter
  • El usuario por medio de un link debe autorizar a la aplicación para acceder a su cuenta
  • Twitter responde con un PIN
  • Y el usuario proporciona el PIN al cliente
  • Finalmente el cliente puede acceder a la cuenta por medio de 2 valores (Token y Token secret) (El Equivalente a su Usr y Pass pero para esta aplicación específicamente)

Así que les muestro mi ejemplo muy basico de como manejar esta API

  • Primero que nada es necesario registrar una aplicación en twitter (Eso nos dara 2 claves) que vienen siendo como el Usr y pass (De la aplicación) para conectar a twitter (Las de TweetJMx vienen en el código)
  • Después obtener acceso de una cuenta (Habría hecho una pero ayer llegue muy cansado)

La intencion es agregarle mas funciones, por el momento solo actualiza, lee los ultimos tweets y retwitea
La API es muy fácil de utilizar, prácticamente me limito a llamar a las funciones de twitter4j

import java.util.ArrayList;
import java.util.List;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
import twitter4j.auth.RequestToken;

/**
 *
 * @author CybJer
 */

public class TweetJMx {

    public static Twitter twitter = new TwitterFactory().getInstance();
    public static AccessToken aTkn;

    public static boolean analize(String cmd) {
        try {
            if (cmd.equalsIgnoreCase("")) {
                return false;
            }
            if (cmd.matches("ls{1}")||cmd.matches("dir{1}")) {
                readTweets();
            } else if(cmd.matches("(rt-){1}[0-9]+")){
                retweet(Long.parseLong(cmd.split("-")[1]));
            }
            else {
                update(cmd);
            }
        } catch (Exception ex) {
            System.out.println("Error:\n" + ex);
        }
        return true;
    }

    public static void main(String[] args) throws TwitterException {
//      Claves aplicacion
        twitter.setOAuthConsumer("jtjDcIRHXwtJtG0Vs9JAyg", "WEwmiYIsnErWsslxXz5zERKs1ZxV4gfWK24RYtDOc");
                auth();
        /*auth se encarga de obtener la liga de autorizacion, Obtiene el PIN y muestra el Token y Token Sectret del usuario*/

//        Claves de usuario
//        aTkn = new AccessToken(/*token*/"",/*tokensecret*/ "");/*Aqui se pueden ingresar directamente el token y token secret para no solicitar nuevos por PIN */
        twitter.setOAuthAccessToken(aTkn);
        twitter.verifyCredentials();
        String cmd;
        do {
            System.out.print("Tw: ");
            cmd = System.console().readLine();
        } while (analize(cmd.trim()));
        System.exit(0);
    }

    public static void update(String update) throws TwitterException {
        twitter.updateStatus(update);
    }
    public static void retweet(long id) throws TwitterException {
        twitter.retweetStatus(id);
    }

    public static void readTweets() throws TwitterException {
        List<Status> statuses = new ArrayList();
        statuses = twitter.getFriendsTimeline();
        System.out.println("Tweets: ");
        Status status = null;
        for (int i = statuses.size() - 1; i >= 0; i--) {
            status = statuses.get(i);
            System.out.println(status.getId() + " : " + status.getUser().getName() + ":\n" + status.getText());
        }
    }

    public static void auth() throws TwitterException{
        RequestToken requestToken = twitter.getOAuthRequestToken();
        System.out.println("Url: \n" + requestToken.getAuthorizationURL() + "\n\n");
        String pin;
        while (aTkn == null) {
            System.out.print("Pin: ");
            pin = System.console().readLine();
            try {
                aTkn = twitter.getOAuthAccessToken(requestToken, pin);
            } catch (TwitterException ex) {
                System.out.println("Invalid");
            }

        }
        System.out.println("Token: " + aTkn.getToken());
        System.out.println("Token secret: " + aTkn.getTokenSecret());
    }
}

Cabe mencionar que esta diseñado especificamente con propositos didacticos y personales
Adjunto el proyecto de netbeans

AdjuntoTamaño
TweetJMx.zip547.9 KB

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

wouu interesante yo se poco

wouu interesante yo se poco de programacion ando en estudio pero si requieres conejillos de inidias que diga tester adelate