Rated
Una aplicación para calificar las canciones que escucho en Spotify y saber cuántas veces escucho cada una, un dato que Spotify no muestra.
Calificar una vez y que lo demás pase solo
Spotify permite guardar canciones, pero no calificarlas, y no muestra cuántas veces has escuchado cada una. Rated resuelve las dos cosas. La calificación va de A+ a D. Cuando una canción saca B+ o más, la app la agrega sola a mis playlists de favoritas y a mis Me gusta de Spotify; si después le bajo la calificación, la quita.
Además separo el año en tres playlists de cuatro meses cada una. Las canciones que califico alto entran a la del periodo actual, y las de periodos pasados ya no se modifican: quedan como registro de lo que escuchaba en esa época.
Para el conteo de reproducciones importé el historial completo que Spotify entrega cuando le pides tus datos: 187,577 reproducciones desde 2018. Solo cuento las que duran más de 30 segundos, que son unas 120 mil y casi 5,900 horas. Desde entonces la app registra cada canción que escucho.
Con eso puedo ver qué escuché más este mes, qué llevo meses sin escuchar y qué escucho mucho sin haberlo calificado.
De dónde salen los datos
API de Spotify
OAuthLa app inicia sesión con mi cuenta y guarda el acceso en la base de datos. Solo acepta mi cuenta, para que nadie más pueda conectarse.
Registro cada 15 minutos
Cloud SchedulerSpotify solo muestra las últimas 50 canciones escuchadas, unas tres horas. Primero usé una tarea programada en GitHub Actions, pero se retrasaba de 2 a 5 horas y se perdían canciones; con Cloud Scheduler ya no.
MySQL
dos tablasUna guarda cada reproducción con su fecha, para consultar por periodo; la otra lleva el total por canción.
FastAPI en Cloud Run
Python · pandas · Cloud BuildCada cambio que subo a GitHub se compila y se publica solo. La contraseña de la base de datos se guarda en Secret Manager.
Web, escritorio y Android
tres versionesLa misma interfaz en el navegador, en una app de escritorio y en Android, con notificación y widgets.
Lo que aprendí haciéndola
Cada reproducción se cuenta una sola vez
El registro corre cada 15 minutos y siempre vuelve a ver canciones que ya guardó. Para no contarlas dos veces, la tabla no acepta la misma canción en el mismo momento (llave compuesta e INSERT IGNORE). Así el control está en la base de datos y no depende de que el código no falle.
Reconocer una canción por nombre y artista
Spotify le da identificadores distintos a la misma canción según el álbum o la reedición. Al cruzar solo por identificador se perdían unas 12,000 reproducciones; lo noté comparando con otra app de estadísticas. Ahora se cruza por nombre y artista, con cuidado de no juntar un remix con la versión original.
Cero no es lo mismo que sin dato
En la pantalla para limpiar mis Me gusta, las canciones sin historial aparecían con cero reproducciones y salían primero en la lista para quitarse. Ahora se muestran con un signo de interrogación.
Pocas consultas a la base de datos
La base de datos está en otra región y cada consulta tarda unos 80 ms. Pedir 500 canciones una por una tardaría 40 segundos, así que cada pantalla se resuelve en dos consultas.
- Python
- FastAPI
- pandas
- MySQL
- Google Cloud Run
- Cloud Build
- Cloud Scheduler
- Secret Manager
- API de Spotify
- OAuth
- Android

