[en] In this project, it has been made a web application of music recommendation over Spotify, which any user with a registered account on the referenced platform could use to obtain recommendations of songs and playlists to add them to the account. The application allows exploring the different user's playlists, as well as their recently played songs. When a user access to a different view, he'll find instantly recommended music to fit what he is exploring, could be the user's profile, recently'songs, or finding a single song to match an existing playlist, among other. The users add any of these recommendations to their account. Recommendations are based on a neighbor search, to achieve this, a-NN is used, a k-NN variation, an instance based machine learning algorithm. A playlist will be considered as an input on the system core, and the output will be another neighbour playlists. To recommend songs, a weighted sum of the neighbour playlists songs will be done. The application has ben developed as two artifacts. One is using the Python programming language, which contains the recommendation system engine and exposes some recommendation services through a REST interface. The otherone artifact will be a Java web application, using the Spring framework, which will contain the user interface and will be the one who coordinates the comunications with the python artifact, the Spotify API and the database. The application components have been identified as independent containers whose has been deployed in a Kubernetes cluster in the Microsoft Azure cloud.

[es] En este proyecto se ha elaborado una aplicación web de recomendación de música sobre Spotify que cualquier usuario con una cuenta en la plataforma podrá utilizar para obtener recomendaciones de canciones y listas que añadir a su cuenta. La aplicación permite explorar las diversas listas de reproducción del usuario, así como sus reproducciones recientes. Cuando un usuario acceda a una página, podrá encontrar instantáneamente música recomendada dependiendo de lo que esté explorando, pudiendo ser en el perfil del usuario en su conjunto, en las canciones que ha escuchado recientemente, o recomendar una canción para una lista de reproducción en concreto, entre otras. El usuario podrá añadir cualquiera de las recomendaciones a su cuenta. Las recomendaciones se basan en una búsqueda de vecinos, para ello, se utiliza a-NN, una variación de k-NN, un algoritmo de aprendizaje basado en instancias. En el núcleo del sistema se considerará como entrada una lista de reproducción, y su salida serán otras listas de reproducción vecinas. Para recomendar canciones, se hará una suma ponderada de las canciones que contienen las listas de reproducción vecinas. La aplicación se ha desarrollado como dos artefactos. Uno utilizando el lenguaje de programación Python que contiene el motor del sistema de recomendaciones y expone una serie de servicios internos de recomendación a través de un frontal REST. El otro artefacto será una aplicación web desarrollada en JAVA utilizando el framework Spring, que contendrá la interfaz de usuario y estará encargada de orquestar las comunicaciones con el otro artefacto, el API de Spotify y la base de datos. Los componentes de la aplicación se han identificado como contenedores independientes y se han desplegado en un clúster Kubernetes en la nube de Microsoft Azure.