Deze post is onderdeel van een serie over “FemFM”, over de representatie van vrouwen op de Nederlandse radio. In andere posts kan je de statistieken vinden, de aanleiding, hoe ik data classificeer en mijn reflectie op de data. In deze post leg ik uit hoe ik de radiodata verzameld heb.
Radiostations “afluisteren”
De eerste stap is uitzoeken welk liedje er op de radio is. Bijna alle stations sturen tegenwoorden digitaal informatie mee over wat er draait, dat zie je ook bijvoorbeeld in je autoradio langskomen. Ook op een website of app van een zender kan je dat zien, bijvoorbeeld voor Radio 2:
Dit is misschien niet iets waar je als niet-programmeur over nadenkt, maar informatie die in je browser aankomt, die kan je ook met een scriptje afluisteren. Immers, het “eindpunt” aan de andere kant weet niet of jij echt een browser bent, of een Python-programma met een plaksnor op (over die digitale plaksnor later meer).
Met een beetje zoeken en rondklikken kan je ontdekken welke verbindingen er gemaakt worden door de radio2 site zelf:
Door vervolgens met Python een verzoek naar dit eindpunt te sturen, kan je de data ook binnen krijgen.
Data in dezelfde vorm gieten
Voor 3fm bijvoorbeeld, kan je via deze link de data bekijken, dat kan ook gewoon “met de hand” door op de link te klikken zie je de liedjes van vandaag, en deze link is de data van Q Music. Als je de links bekijkt zie je al dat de data niet hetzelfde is. 3fm geeft een startdatetime
mee, terwijl Q het heeft over played_at
, en de zenders van Talpa weer over een broadcastDate
. 3fm geeft ook nog handig een eindtijd mee, zodat je weet wanneer het volgende liedje erop is, maar Q niet.
Het meeste werk zit er dus niet zozeer in om de data te verzamelen maar om te zorgen dat de data er steeds hetzelfde uitziet, zodat je het makkelijk kan analyzeren, dat zie je bijvoorbeeld hier in de code terug.
Programma’s opzoeken
We hebben nu de data per zender, maar het zou nog leuker zijn als we ook wisten welk programma er speelde (en in het geval van de publieke zenders, van welke omroep). Gelukkig is er op het internet nog een handige bron te vinden: Oorboekje. Zij hebben informatie over alle zenders en hun programma’s:
Omdat zij ook een api hebben, kan ik op vergelijkbare wijze meteen opvragen welk programma er op is. Deze informatie toon in allemaal live als je navigeert naar femfm.nl.
De data opslaan
Mijn eerste idee was alleen om het online radiostation te maken en live de muziek door te geven. Maar toen ik deze code eenmaal geschreven had dacht ik: ik kan ook de data opslaan en er wat analyses over uitvoeren. Bijvoorbeeld per zender en omroep tellen hoe zij het doen. Dan kan ik die informatie op de website tonen, en een beter beeld vormen van hoe verschillende zenders het doen. Dat was met de bestaande code niet veel meer werk.
Want nu we alle relevante informatie weten te vinden, hoeven we deze alleen nog maar in een “loopje” te verzamelen, zoals je kan zien in het loggerbestand. We beginnen met radio 2, registreren het liedje en het programma, en zappen door. Anders dan bij het live radiostation, zappen we steeds tijd door, anders missen we een liedje. Als we precies weten hoe lang het liedje duurt, wachten we tot de eindtijd, zo niet, dan wachten we 3 minuten. Misschien missen we dan net het begin, maar dat geeft voor de api niet. Soms komen we een tweede keer langs, dan slaan we het liedje wel maar een keer op, anders krijg je dubbel tellingen.