← Terug naar projecten

Zonder officiële API

Live

MuziekDetective

Analyseert een openbare Spotify-playlist en genereert op basis van genre, sfeer en tempo één onderbouwde muzieksuggestie via AI.

Startpagina van MuziekDetective met het invoerveld voor de Spotify-playlist-URL.
  1. Playlist-URL
  2. Selenium
  3. Groq (Llama)
  4. Suggestie

Probleem

Een playlist zegt genoeg over sfeer en smaak, maar er bestond geen simpele manier om daar één onderbouwde suggestie uit te halen zonder een account aan te maken of zelf een API-sleutel bij Spotify te regelen.

Aanpak

Je plakt de URL van een openbare Spotify-playlist. Selenium laadt de pagina headless en extraheert de tracklist, die namelijk dynamisch wordt geladen met JavaScript, dus een simpele HTTP-GET volstaat niet. De tracklist gaat vervolgens naar de Groq API (Llama), die op basis van genre, sfeer en tempo één onderbouwde suggestie teruggeeft.

Om misbruik en het lekken van de Groq-sleutel te voorkomen, zit er rate limiting per gebruiker en centraal API-sleutelbeheer in.

Stack

  • Java
  • Spring Boot
  • Groq API (Llama)
  • Selenium
  • Docker
  • Railway

Bewuste keuze

Ik koos bewust voor geen Spotify Web API en geen OAuth. De applicatie werkt puur op een openbare playlist-URL, dus een gebruiker hoeft niets te registreren of in te loggen. De prijs daarvoor is een afhankelijkheid van Spotify's HTML-structuur: verandert die structuur, dan breekt de extractie. Dat risico accepteer ik bewust in ruil voor een drempelloze gebruikerservaring.

Wat ik ervan leerde

Het idee was snel gebouwd; de weg naar een betrouwbare, live applicatie leverde de meeste leerervaring op.

Lokaal werkte alles feilloos, maar in productie liep de tracklist-extractie af en toe vast, een omgevingsspecifiek probleem dat lokaal onzichtbaar bleef. Dat dwong me tot systematisch debuggen op basis van productielogs: hypotheses opstellen, één variabele tegelijk aanpassen, en pas concluderen als het logboek het bevestigde. Dat is een vaardigheid op zich, los van het schrijven van de code zelf.

Daarnaast leerde ik dat AI-output niet vanzelf betrouwbaar is. Zonder bijsturing via zowel de prompt als de model-parameters kreeg ik wisselende, soms te stellige antwoorden. Pas na tuning op beide vlakken werd de suggestie consistent bruikbaar.

AI-assistent

Hoi, ik ben de AI-assistent van Lucas Fenstra. Vraag me gerust iets over hem of zijn projecten.

Kan fouten maken, check bij twijfel de case study zelf. Gesprekken worden nergens opgeslagen.