Publicar tweet desde la terminal con NodeJs

Integración sencilla de twitter con nodejs, publicando un tweet desde la terminal.

Enmanuel Jarquín
200CodeBlog
Published in
4 min readJul 23, 2018

--

En este artículo se describirán los aspectos más relevantes para crear un tweet desde la terminal, no es un tutorial paso a paso, se trata de explicar lo que se hizo, el porqué se hizo y las librerías que se usaron para lograrlo, puedes ver el código completo aquí.

Crear una aplicación de línea de comandos

Parte de la intención de esta aplicación es interactuar con la línea de comandos usando NodeJs.

Decorar

Lo primero será decorar nuestra aplicación mostrando el banner “Hello Twitter”, lo logramos con el uso de la librería figlet.

Esta librería cuenta con 2 métodos para mostrar en pantalla, la primer forma es asíncrona, pasándole un callback como segundo parámetro, en nuestro caso no necesitamos asincronía por lo cual usaremos la función textSync.

Para cambiar el color usamos la librería chalk, esto es útil para estilizar las salida de información en la terminal.

https://github.com/TheEnmanuel23/terminalTweet/blob/master/src/init.js

Interacción

La interacción del usuario con la aplicación inicia cuando se le solicita que ingrese el contenido del tweet que desea publicar, para el ejemplo el tweet debe cumplir 2 condiciones: primero que la longitud del tweet sea mayor a cero y segundo que sea menor a 280, en caso contrario se le notificará al usuario.

Para lograr esta interacción hacemos uso de la librería inquirer, a la cual hay que pasarle una array de objetos que definen las preguntas a hacerle al usuario.

https://github.com/TheEnmanuel23/terminalTweet/blob/master/src/questions.js

El objeto askTweet contiene propiedades que son procesadas por inquirer, para conocer todas las propiedades que soporta puedes ir a la sección de questions en el repositorio de inquirer.

Lo siguiente es pasarle a inquirer el array de questions.

let response = await inquirer.prompt(questions);

Nos retorna una promesa, para resolverla usamos async await, la respuesta es un objeto el cual contiene una propiedad del mismo nombre que indicamos en el atributo name del objeto askTweet.

{ "tweet": "Esto es un tweet de prueba" }

Conexión con el api de twitter

Lo primero será crear una app en twitter, sino sabes como hacerlo puedes revisar este post.

Configuración inicial

Una vez la tengas creada, busca y copia los siguientes valores:

  • Consumer Key
  • Consumer Secret Key
  • Access Token
  • Access Token Secret

Estos valores los agregamos a nuestro archivo .env que este a su vez lo agregamos al archivo .gitignore para no subirlo al repositorio, el archivo .env se verá así:

CONSUMER_KEY=vfVfsWY2lpvgfAQcqiN60Al5qCONSUMER_SECRET=8RNV8BnXA0HlvOnKKNUXFDe62gxG8FHdGetU7nbAEoWPwNFOT5ACCESS_TOKEN=505086447-uPzAl1OTgWoRRlVdralGKJtQCFZ4Z4XcTMW82DY2ACCESS_TOKEN_SECRET=dxKfOcWoMFjclayDJEEnnyYLzXHHjTaYHOIhaG142OJ1Z

Nota: Estos datos no funcionarán al terminar de leer este artículo, por lo que tienes que crear tu propia app en twitter y obtener las credenciales.

Luego cargamos estas variables de entorno con la librería dotenv.

https://github.com/TheEnmanuel23/terminalTweet/blob/master/index.js

Conexión con twitter

Para lograrlo hacemos uso de la librería node-twitter, a la cual le pasamos un objeto con cuatro propiedades cuyos valores se obtienen de nuestras variables de entorno.

https://github.com/TheEnmanuel23/terminalTweet/blob/master/src/twitter.js

Luego enviamos nuestro tweet con el método post de nuestra constante client.

client.post('statuses/update', { status: tweet })

Pasamos primero el tipo de acción y como segundo parámetro un objeto con los datos a publicar, esto nos retorna una promesa que al resolverla nos devuelve un objeto que define el cuerpo del tweet o un error en caso de que la publicación del tweet falle.

Terminal + integración con twitter

Por último unimos todas las partes.

https://github.com/TheEnmanuel23/terminalTweet/blob/master/index.js

Para indicarle al usuario que se está enviando su tweet usamos la librería ora, y de igual forma para mostrar iconos en la terminal usamos la librería emojic.

Conclusión

En resumen la integración de twitter con Nodejs basicamente se logra obteniendo las credenciales de nuestra app en twitter y pasarles estas credenciales a la librería node-twitter, luego de eso dependemos totalmente de lo que la api pública de twitter expone, puedes leer la documentación oficial aquí.

En este ejemplo solo se mostró como enviar un tweet, pero con esta misma configuración puedes obtener todos tus tweets, retweetear, enviar archivos, etc.

Código completo

--

--

Enmanuel Jarquín
200CodeBlog

I’m a software developer, I love learning Javascript(Node, React), DJango and practicing SOLID with C#, writter in medium/funnydev