Jugando con Python y el API de Spotify

Antes de empezar que conste que las líneas que vas a leer a continuación no pretenden sentar cátedra sobre programación en python ni nada por el estilo, de hecho estoy introduciéndome en este lenguaje todavía. La única intención es demostrarte las posibilidades que se pueden llevar a cabo con un lenguaje de programación y las API de servicios que podemos utilizar de forma gratuita para obtener datos y tratarlos. En este caso voy a obtener información de las entrañas de Spotify a través de un pequeño programa escrito en Python, de forma muy sencilla, que compartiré contigo.

Spotify es un servicio de música en streaming. Personalmente pienso que es de las mejores cosas que se han podido inventar jamás (casi tanto como la pasta italiana). Si no lo conoces o no lo utilizas, no sabes lo que te estás perdiendo. Disponer de una cuenta en Spotify (gratuita o premium) te proporciona acceso a cientos de miles de canciones y obras desde tu ordenador o móvil (ojo, parece que me lleve comisión de Spotify pero no es así; lo digo como recomendación personal). Pero además de acceder a toda esa información desde la aplicación oficial, Spotify te proporciona un acceso «por detrás» a través de un API, para que desde tu aplicación o código puedas obtener información del interior de Spotify. Como cualquier otro API, es necesario que obtengas unas claves que te permitirán conectarte al servicio. En este caso deberás crearte una cuenta como desarrollador Spotify y dar de alta una aplicación. Una vez lo hagas tendras un Client ID y un Client Secret.

¿Pero qué tipo de información puedes obtener del API de Spotify? No sólo toda la información de listas de reproducción, canciones, artistas, etc. Si no que además tienes acceso a información más técnica sobre una canción en concreto: su tempo, la duración, su grado de «instrumentalidad», de energía, etc. Es decir, Spotify tiene analizada cada canción en una serie de parámetros interesantes que podemos conocer sólo a través del API.

¿Y por qué Python? ¿Y por qué no? Si tuviera que enseñar a programar a mis hijas, a fecha de esta publicación me decantaría por enseñarles Python. Además me apetece aprender más a fondo este lenguaje y es una buena oportunidad para ello. De hecho dispone de un montón de librerías muy potentes para el tratamiento masivo de datos, etc. como Spotipy, librería que vamos a utilizar para ayudarnos a conectar al API de Spotify desde Python.

Cuál es el objetivo

Tengo una playlist en Spotify con más de 400 canciones y quiero obtener 3 ficheros con la siguiente información para posteriormente utilizarla:

El programa debe conectarse a Spotify, acceder a la playlist y para cada canción de dicha colección acceder de nuevo a Spotify para obtener toda la información que quiero, y guardarla en esos 3 ficheros.

Empezamos

Lo primero que hacemos es importar los módulos o librerías que vamos a necesitar; en este caso pandas y spotipy:

import pandas as pd 
import spotipy 

""" Necesitamos los modulos de spotipy y pandas. Si nos los tenemos, los instalaremos escribiendo en la consola:
	pip install spotipy
	pip install pandas
"""

A continuación y gracias a la librería spotipy, nos conectaremos a Spotify con nuestras claves Client ID y Client Secret.

sp = spotipy.Spotify() 
from spotipy.oauth2 import SpotifyClientCredentials 
cid ="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
client_credentials_manager = SpotifyClientCredentials(client_id=cid, client_secret=secret) 
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager) 
sp.trace=False 

Ahora ya nos queda acceder a nuestra playlist para descargarnos la lista de canciones que la conforman. ¿Pero cómo lo hacemos? Necesitamos el identificador de la playlist que podemos obtener fácilmente de la aplicación oficial. Sólo tenemos que acceder al menú de opciones de la playlist y seleccionar la opción «Compartir > Copiar URI de Spotify». Lo que obtenemos es la siguiente cadena spotify:user:***usuario***:playlist:***codigoplaylist*** con el nombre de tu usuario y el código de la playlist. Así que copia el nombre del usuario y el código de la playlist, y pégalos en la siguiente línea de python:

# Obtenemos información de la playlist de Spotify
playlist = sp.user_playlist("***usuario***", "***codigoplaylist***", fields="tracks,next")
tracks = playlist["tracks"] 
songs = tracks["items"]

Ahora para cada canción sólo faltaría realizar las llamadas pertinentes y obtener la información que queremos para acabar exportando todo a una serie de ficheros. Sencillo, ¿no?

A continuación dejo el código fuente de este pequeño programa para que lo descargues si quieres. Recuerda que no está optimizado ni es muy limpio; el objetivo era didáctico y sin querer perder mucho el tiempo… Aunque al final estoy utilizándolo para #OneDayOneSong.

Espero que te haya resultado interesante este contenido.