Elk jaar zet NPO 2 de PDF op hun website waar het programma van de Top 2000 in staat. Je ziet dat dit niet allemaal onder elkaar staat, maar in blokken verdeeld is. Ik heb daar in C# een soort parser voor gemaakt om het te verwerken. Op een bepaald moment heb ik dat netjes in mijn Github-omgeving ingecheckt zodat ik dat elk jaar kan uitchecken: dan hoef ik niet te zoeken op welke computer ook alweer de code stond om die PDF te verwerken.
Zoals je op top2000.solution4u.nl kunt kijken is dat niet alles. Je krijgt bij bepaalde nummers ook de covers van de CD te zien waar het nummer van die artiest op staat. Dat deed ik altijd via een API waarvan ik nu de naam kwijt ben. Zoeken naar mijn credentials en dan via de API de gegevens opvragen. In 2024 kon ik dat niet meer terugvinden en ben ik gaan kijken of ik dat ook via de Spotify-API kon gaan doen. In het verleden had ik daar al eens iets voor gedaan, je kon namelijk je eigen statistieken opvragen van meest populaire nummers van jezelf op de korte, middellange en lange termijn.
Je ziet bij alle endpoints dat er gewerkt wordt met ID's van Spotify en daar heb je in het begin niet zoveel aan. Want ik heb een artiest en een nummer, daar wil ik de CD-hoes van. In dit StackOverflow item werd genoemd dat je het search-endpoint kunt gebruiken en dat was inderdaad een goede manier om te starten.
Stap 1: vraag de ID's van de artiesten op
Ik ben eerst door de lijst heen gegaan en heb van alle artiesten via de API de ID opgevraagd. Met een $"https://api.spotify.com/v1/search/?q=artist%3A{artist}&type=artist&market=NL&limit=1" is dat te doen. Ik schrijf dit meteen weg naar een tekstbestand en ik hou natuurlijk ben welke artiest ik al opgevraagd heb. Als ik het ID van Elvis heb, hoef ik niet nog 20 requests naar de API te sturen.
Stap 2: vraag per artiest zijn/haar albums op
Waarschijnlijk had ik ook bij stap 1 kunnen zoeken op artiest en tracknaam. Als je op de albums van de artiest zoekt kun je filteren op het type album. Ik kies voor album, compilation, single omdat ik niet de "appears on" als resultaat wil krijgen, dus een call naar "https://api.spotify.com/v1/artists/{artistId}/albums?include_groups=album,single,compilation&market=NL&limit=50"
Stap 3: vraag van de albums de tracks (en afbeeldingen) op
Je krijgt bij de albums wel het aantal tracks terug, maar niet welke tracks erop staan. Die moet je zelf via het endpoint "https://api.spotify.com/v1/albums/{albumId}?market=NL" opvragen. In de "images"-property krijg je de URL's en formaten van de afbeeldingen van de albumhoezen terug. Voor mijn site heb ik genoeg aan de 300x300 versie.
Bij de specs werd ook een stukje "preview audio" genoemd, maar dat is deprecated (zal binnenkort vervallen) en gaf mij nu ook al geen data terug.
Mocht je zelf een website hebben en meer koppelingen met Spotify gaan maken, dan is het wel zo netjes om hun officiƫle logo e.d. te gebruiken, dat kun je vinden bij de Design Guidelines.
Hiermee heb ik dus de lijst, ik heb mijn bestaande code om de lijst per uur te tonen en ook de albumhoezen om te tonen, dus in principe heb ik een werkend product.
Aanvullend had ik ook altijd een koppeling via het referral-programma van BOL.com, bij een track kon je doorklikken naar BOL.com, waar je het album kunt kopen, mocht je interesse hebben. Zou je een aankoop doen, dan krijg ik daar een heel klein percentage van, omdat dit via mijn site gegaan is. Dat zal 1 of 2 cent zijn, dus veel levert het niet op, maar het is iets wat je "passief inkomen" noemt. Je hoeft er niet teveel voor te doen en zo komt er toch zo nu en dan wat geld op je bankrekening. In verhouding met wat ik voor de hosting betaal kan het trouwens lang niet uit, het blijft een beetje een hobby project :)
BOL.com heeft een API. Vroeger zocht ik daar op artiest en nummer en kreeg dan (over het algemeen) de link naar het album terug. Maar dat ging volgens mij ook niet altijd goed. En als ik als test op Goldband en hun album zoek, krijg ik een CD van een heel andere band!
Ik zoek nu bij BOL op basis van artiest in de categorie CD's. Uit die resultaten kijk ik of de naam van het gevonden album in die lijst staat. Zo ja, dan wordt die al referral-link in mijn site toegevoegd. Dat zou je in ieder geval de juiste CD moeten opleveren!
Inmiddels ben ik voor mezelf met een andere omgeving bezig, zodat ik online ook mijn accounts voor API-projecten kan gebruiken en op die manier data kan opvragen. Een mooi item voor een post in 2025!