lunes, marzo 04, 2013

Haz que Twitter "posteé" automaticamente

Aquí te dejo un programilla DIY (do it yourself) capaz de twittear automáticamente cualquier tribulación que se te pase por la cabeza.
En mi caso se trata de @Audreytheplant.  Un ente cibernético que le he dado la posibilidad de expresarse  libremente por internet. La idea es que evolucione al medio físico pero habrá que esperar que el tiempo y la inspiración lo permitan. Inicialmente iba a ser una cosa pero el tema se está yendo por otros derroteros.
Durante la programación creo que  he sentido un poco la emoción que debería haber experimentado el  Dr. Frankenstein con su creación. Jajajaja. Pero no me ha hecho falta un rayo para ponerla en marcha.
  
El programilla está hecho en java, bajo la IDE NetBeans y utiliza las librerías twitter4j.  Está desarrollada bajo un entorno libre: linux. Vamos... que si estuviéramos en Matrix sería hija de Sion.

Si decides montarla, espero que sí, también lo puedes hacer bajo windows, mac, solaris... vamos en lo que te de la gana. Es lo que tiene java y su jvm (java virtual machine). Por decirlo de alguna manera, es como un engranaje que se combina con tu sistema operativo para hacer funcionar programas java (.jar).

Por otro lado el IDE NetBeans (Integrated Development Evironment), ahora que estoy estudiando inglés también puede ser Entorno de desarrollo Integrado, es el programa para escribir el código. Es la herramienta que ofrece la gente de Sun Microsystems para que programes con su lenguaje. Es totalmente gratuita y personalmente la encuentro muy potente. Aunque ahora están más de moda IDE's como Eclipse, orientadas hacia Android y con el mismo corazón: java.

Y por último la librerías Twitter4j.  Están hechas por Yusuke Yamamoto. Un genio japonés que  las ofrece de manera altruista. Puedes hacer una donación en su página. Incluso en dev.twitter(pag oficial) las recomiendan.

Bueno, al grano. Lo que primero debes hacer es darte de alta como developer en la página de twitter. Con esto lo que harás es conseguir unas keys que  permitirán acceder a tu programa a tu cuenta twitter para que haga con ella lo que le de la gana. Toda una cacharra de código que lo flipas pensada para que los programas puedan interactuar de manera segura con tu cuentas de usuario. Aquí lo explican muu bien: Dar de alta tu aplicación en Twitter.

Una vez hallas conseguido tus códigos, ya solo tendrás que montar la aplicación y tunearla a tu gusto.
El funcionamiento es muy sencillo. La aplicación carga en una variable String array (es una matriz de variables, en este caso unidimensional y de texto) las frases que hayas metido tu previamente en un archivo de texto. Estás frases son las tribulaciones que quieres que diga automáticamente tu cuenta de twitter.
Una vez cargado el array, hago que se seleccione al azar una posición del array y la twitteé.
Ya verás que hay muchos aspecto a mejorar y carencias del programa. La principal es la definición del array. No he sido capaz dimensionarlo al número de frases del archivo de texto. Si vas a meter más de 50 frases deberás dimensionarlo consecuentemente.

Este es el código con algunas anotaciones. Te haría un paso a paso de como hacerlo en Netbeans pero créeme, ya se ha escrito mucho:


package audreytwittea;

/**
 *
 * @author Howls
 */
import java.io.BufferedReader;                     // Estás son las librerías que necesita el programa
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
import twitter4j.conf.*;

public class AudreyTwittea {                  //En plan a lo cutre meto toda la cacharra en una sola clase
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws TwitterException {  // El main, donde empieza el guión del prog
        String testPost;
        String consumerKey = "Pon aquí tu consumer Key";          //Declaración variables 
        String consumerSecret = "Pon aquí tu consumer secret";
        String accessToken = "Pon aquí tu acces Token";
        String accessSecret = "Pon aquí tu acces Secret";
        String fin="fin";
        String texto;
        String frases[];                    //Declaración del array pero no construido todavía
        int NumFrases =0;
        try {                                             //Aquí se empieza a leer el archivo de texto con las frases
            FileReader flE=new FileReader ("/Frases"); //El archivo de frases está ubicado en el directorio raíz
            BufferedReader fE=new BufferedReader (flE); //En mi caso es linux. No hace falta q ponga c:\
            frases = new String [50];    //Aquí construyo el array de variables String con 50 posiciones
            do{
                texto= fE.readLine();
                frases[NumFrases]= texto;
                NumFrases ++;     // Con esta variable se cuenta el num de frases q hay para lue hacer el ramdom
            }
            while(!texto.equals(fin));  //El archivo de texto acaba con una frase q pone fin xa ident el final de la lectur
        fE.close(); 
        Random aleatorio =new Random(); 
        int NumAleatorio = aleatorio.nextInt(NumFrases-2);// Se genera un num aleatorio q dará posición al  
            //array. Así se twittea una frase aleatoria. El -2 es para ajustar las frases que hay realmente. Cuenta 2 de más y no se porque.    
        TwitterFactory factory = new TwitterFactory();        //Se inicia la cacharra para twittear 
        Twitter twitter = factory.getInstance();
        AccessToken accestoken = new AccessToken(accessToken, accessSecret);
        
        twitter.setOAuthConsumer(consumerKey, consumerSecret);
        twitter.setOAuthAccessToken(accestoken);
        Status status = twitter.updateStatus(frases[NumAleatorio]); //Este el método para subir el twit.
        System.out.println("it worked!");
        if (status.getId() == 0) {                 //A partir de aquí se controlan posibles errores.
        System.out.println("Ha ocurrido un error mientas se twitteaba");
        }                    
            } catch (IOException e){
        System.out.println ("Algo ha pasado");
        }
    }   
}

La librería que tienes que añadir al proyecto es  twitter4j->lib->twitter4j-core-3.0.3.jar. No añadas la carpeta a piñón porque no va a funcionar.

Ya estoy ansioso por ver tu alter ego twittero. Avisa @amargoyexpreso2.

No hay comentarios: