Skip to content

RuthNavarroCarrasco/Spotify-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎶 Spotify Wrapped Personalizado 🎶

Una aplicación web de Flask que permite a los usuarios obtener sus artistas y canciones más escuchadas en Spotify haciendo uso de la API de Spotify.

📋 Tabla de Contenidos


✨ Introducción

Esta aplicación permite a los usuarios iniciar sesión con su cuenta de Spotify y obtener un análisis de sus datos de escucha. Podrán ver sus artistas y canciones favoritas, así como los géneros que más escuchan. Está construida usando Flask, y se conecta a la API de Spotify para recopilar esta información.

🔹 Características principales:

  • ✅ Autenticación a través de la cuenta de Spotify.
  • 🎤 Obtención de los top artistas y canciones del usuario.

⚙️ Requisitos

  1. Cuenta en Spotify for Developers: Necesitarás crear una aplicación para obtener el CLIENT_ID y CLIENT_SECRET.

  2. Spotify API Credentials: Una vez que hayas creado la aplicación, obtén tus credenciales de:

    • CLIENT_ID
    • CLIENT_SECRET
    • Configura el Redirect URI de tu aplicación en Spotify a http://localhost:5000/callback.

El CLIENT_ID y el CLIENT_SECRET lo encontraréis dentro de la información de la aplicación.

credential

  1. Python 3.10: Usa pyenv para asegurarte de que tienes la versión correcta de Python.

  2. Poetry: Para gestionar las dependencias de Python, asegúrate de tener instalado poetry.

🔧 Configuración

  1. Clona el repositorio y navega al directorio del proyecto:
    git clone https://github.com/RuthNavarroCarrasco/Spotify-API.git
    cd Spotify-API
  2. Crea un archivo .env en la raíz del proyecto con las siguientes variables:
    CLIENT_ID="foo"
    CLIENT_SECRET="bar"
  3. Instala las dependencias y configura el entorno
    make setup

🚀 Ejecución

Primero abre una shell de poetry

make shell

Luego inicia la aplicación para ver tus artistas y canciones más escuchadas

make run

La aplicación estará disponible en http://localhost:5000.

🛠️ Arquitectura

El siguiente diagrama muestra el flujo de autenticación y cómo la aplicación interactúa con la API de Spotify para extraer los datos de las canciones y renderizar la salida en HTML.

Esquema de la Arquitectura

Explicación del Flujo

  1. Solicitud de autenticación: El proceso comienza cuando el usuario inicia sesión en la aplicación. Esto genera una solicitud de autenticación que redirige al usuario a Spotify para autorizar la aplicación.

  2. Comprobar Token: Al recibir el código de autorización de Spotify, la aplicación solicita un token de acceso. Este token es necesario para hacer solicitudes a la API de Spotify en nombre del usuario.

    • Si el token es válido, la aplicación continúa al siguiente paso.
    • Si el token ha expirado, se activa un proceso de "Refrescar Token" para obtener un nuevo token sin que el usuario tenga que iniciar sesión de nuevo.
  3. Refrescar Token: En caso de que el token haya expirado, la aplicación utiliza el "refresh token" para solicitar un nuevo token de acceso. Esto permite mantener la sesión activa y evita que el usuario tenga que autenticarse de nuevo.

  4. Solicitud API: Una vez que se ha comprobado o refrescado el token, la aplicación realiza solicitudes a la API de Spotify para obtener datos específicos, como los artistas y canciones más escuchados del usuario.

  5. Extraer datos de canciones: Los datos obtenidos de la API de Spotify se procesan para extraer detalles como el nombre de las canciones, artistas, géneros, y otros elementos relevantes.

  6. Renderizar HTML: Finalmente, los datos extraídos se pasan a una plantilla HTML en Flask, que se muestra al usuario en el navegador.

Este flujo asegura que la aplicación maneje de manera segura y eficiente la autenticación y autorización de los usuarios, mientras proporciona un análisis de sus preferencias de Spotify.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published