César Aquino Maximiliano

Software Developer | Bombero Voluntario | Tech Instructor

Crear una Aplicación de Línea de Comandos con Node JS

Publicado el por César Aquino Maximiliano en la categoría Otros

Bueno, para los que recién empiezan con Node JS les dejo un tutorial básico para que creen su primera Command-Line Application o en español Aplicación de Línea de Comandos.

En esta oportunidad vamos a crear una aplicación que me permita buscar cantantes, álbunes y canciones usando el API de Spotify. Para ello vamos a usar, como ya les había mencionado, Node JS.

A codear!

0. Preparar el laboratorio

Para instalar Node JS en tu computadora, puedes ver el siguiente manual: http://www.desarrolloweb.com/articulos/instalar-node-js.html.

1. Leer la API de Spotify

Primero que todo, debemos hacer una prueba con el API de Spotify. Para ello entramos a la documentación de Spotify Developer y buscaremos donde dice “Search for an item”, ahí nos darán una url para poder hacer una búsqueda consumiendo sus datos.

https://api.spotify.com/v1/search?q=tania%20bowra&type=artist

Si se dan cuenta, tenemos dos datos en esa url: “q” y “type”. El primero es para poner lo que deseamos buscar y el segundo para indicar qué deseamos buscar: canción, artistas o albun.

Creamos un archivo app.js y llamamos al modulo https, esto porque vamos a consumir de Spotify y tiene ese protocolo, si fuera uno con http el modulo sería http también.

Luego creamos dos variables, una para la búsqueda y otra el tipo de búsqueda.

Después de esto, hacemos uso del método get para hacer la búsqueda. Los resultados los iremos guardando en una variable output. Y al final imprimimos lo que hemos guardado.

var https = require('https');
var search = 'my way calvin harris';
var type = 'track';

// Traemos los datos
var request = https.get("https://api.spotify.com/v1/search?q=" + search + "&type=" + type, function(response) {
  var output = '';
  response.on('data', function (result) {
    // Guardamos los datos recibidos en una variable
    output += result;
  })
  response.on('end', function () {
    // Mostramos los datos obtenidos
    console.log(output);
  })
})

2. Ordenamos los datos según el tipo de búsqueda

Una vez que ya tenemos los datos, nos falta mostrar los datos que necesitamos según el tipo de búsqueda. En este caso, solo mostraremos los nombres que encontramos.

Para ello primero vamos a parsear el JSON y lo convertiremos en un Objeto. Luego haremos un condicional ya que Spotify usa diferentes formas para mostrar según el tipo de búsqueda.

Finalmente mostramos el nombre de cada resultado que fue encontrado.

var https = require('https');
var search = 'a';
var type = 'artist';

// Traemos los datos
var request = https.get("https://api.spotify.com/v1/search?q=" + search + "&type=" + type, function(response) {
  var output = '';
  response.on('data', function (found) {
    output += found;
  })
  response.on('end', function () {
    // Convertimos el JSON en Objeto
    var result = JSON.parse(output);
    // Mostramos los resultados según el tipo de búsqueda
    if (type == 'track') {
      var results = result.tracks.items;
    } else if (type == 'artist') {
      var results = result.artists.items;
    } else if (type == 'album') {
      var results = result.albums.items;
    }
  })
})

3. Mostramos un mensaje de error si la búsqueda no dio ningún resultado. O si ingresaron mal los datos.

Debemos verificar que el Código de Estado devuelva un 200, si no es así, imprimimos el error usando el método http.STATUS_CODE. Esto se puede deber a que ingresaron mal los datos (por ejemplo el tipo de búsqueda) o si no se encontraron resultados.

response.on('end', function () {
      if (response.statusCode === 200) {
        
        // Convertimos el JSON en Objeto
        var result = JSON.parse(output);
        // Mostramos los resultados según el tipo de búsqueda
        if (type == 'track') {
          var results = result.tracks.items;
        } else if (type == 'artist') {
          var results = result.artists.items;
        } else if (type == 'album') {
          var results = result.albums.items;
        }
        
      } else {
        
        console.error("Hubo un error al hacer la búsqueda '" + search +"' con el tipo '" + type + "'. (" + http.STATUS_CODES[response.statusCode] + ")");
        
      }
    }

4. Imprimimos los resultados

Finalmente, si la búsqueda tubo éxito, hacemos un forEach de ‘results’ e imprimimos cada resultado.

// Imprimimos los resultados
        console.log('RESULTADO DE BUSQUEDA PARA "' + search + '"')
        results.forEach(function(element){
          console.log(element.name)
        })

 

Pueden ver el código completo y la aplicación funcionando gracias a nuestros amigos de codepicnic.

Anda a la pestaña terminal y ejecuta el siguiente comando:

node app [tipo: track, artist, album] [busqueda]

Ej. node app artist van

Etiquetas: