Een eerste blik op Bandcamp: scrape it!

Bij Kunstenpunt volgen we de muzikale productiviteit van Vlaams/Brusselse muzikanten op door te focussen op de fysieke releases (geperste CD en vinyl) die ze uitbrengen. We hebben daardoor niet alleen een mooie collectie opgebouwd. Wat we niet in rekening nemen, zijn de digitale releases.

Wil je eens constructief over digitale releases discussieren en doorbomen? Kom graag eens langs in Kunstenpunt voor een koffie!

In dit postje willen we het erover hebben hoe we toch eens een keer kunnen voelen hoe warm het water is aan de digitale overkant. En iedereen mag volgen wat onze stappen zijn: share your learning curve! Om een eerste gevoel te krijgen heb ik een scraper geschreven om releases op Bandcamp van artiesten en labels die zichzelf met een locatie in België profileren. Laten we eens wat gegevens verzamelen waarop we ons baseren.

Scraping Bandcamp

De API van Bandcamp is niet veel soeps, maar je kan natuurlijk altijd ook nog aan screenscrapen doen. Daarvoor gebruik ik het liefst Python, met enkele libraries. Requests is de makkelijkste manier om html pagina’s op te roepen. BeautifulSoup is een uitstekende parser voor html en biedt handige methoden om te zoeken door de html structuur. Pandas is een library om gegevens met een tabelstructuur bij te houden en te verwerken. Die drie libraries samen bieden zowat alle functionaliteit om Bandcamp te scrapen.

Het script dat ik gemaakt heb kan je nalezen en/of forken op GitHub. Het is feitelijk bijzonder eenvoudig. Om Belgische artiesten te vinden ga ik op zoek naar releases die voorzien worden van de tag Belgium. Dat gebeurt automatisch als het profiel van de muzikant een locatie bevat in België. Noteer dat ik daardoor muzikanten mis die in hun profiel geen of een foute locatie invullen, of Belgische artiesten die zelf niet op Bandcamp zitten maar wel bij een buitenlands label op Bandcamp zitten. Om zeker te zijn heb ik ook een lijstje gemaakt van alle Vlaamse gemeenten, en ik zoek ook naar die gemeenten als tag. Dat levert echter niet zoveel extra materiaal op.

Bandcamp toont op tien pagina’s (en niet meer dan dat) de meest recente releases. Hierdoor moet je dus regelmatig de scraper aanzetten om de releases te vatten, want je kan niet oneindig teruggaan in het verleden. Let op: “recent” betekent recentelijk op Bandcamp geplaatst. De datum van plaatsing op Bandcamp hoeft niet noodzakelijk overeen te komen met de releasedatum van het album, want je kan ook antedateren, of ook je release in de (verre) toekomst laten plaatsvinden. Het staat iedereen ook gewoon vrij om te liegen.

Naast de datumgegevens heb je gegevens over de titel van de track, de naam van de artiest, eventueel de naam van een label/overkoepelende artiest, en het formaat (digital release, vinyl, cd, …). In principe zou je ook nog de tags kunnen downloaden, om eventueel een inzicht in het genre te krijgen.

Download hier de releases die voorbijkwamen in januari om zelf mee aan de slag te gaan. Laat maar weten wat je denkt!

(Noteer dat dit dus enkel de releases zijn met release datum in januari die ook in januari gepasseerd zijn op de “new arrivals” tag-pagina’s; het is dus heel goed mogelijk dat er in de komende weken nog releases komen met releasedatum in januari, maar die laten we hier buiten beschouwing)

Pitfalls

Dit gaat natuurlijk niet zonder slag of stoot en er is natuurlijk wel wat werk gekropen in het vangen van error pagina’s enzo. Maar interessanter zijn misschien de volgende opmerking die al meteen duidelijk zijn tijdens het scrapen:

Iedereen kan nu iets op Bandcamp zetten, en het zal voorbijkomen in de “new releases”. Het staat je dan ook weer echter vrij om de release te deleten of om gegevens te wijzigen. Hoe moeten we daar mee omgaan? Moeten we alle gevonden urls van Bandcamp releases periodiek nog eens bezoeken om te zien of ze nog bestaan, en of de gegevens nog hetzelfde zijn? En dan een update doen van de collectie?

Er zijn ook artiesten die spelen met deze mogelijkheid om tracks te updaten zodat elke keer als je luistert naar de Bandcamp release je mogelijk iets nieuws hoort. Dit verandert fundamenteel het idee van een release dat een soort van immutabele versie van je artistiek werk representeert. Hoe moeten we daar mee omgaan in het kader van een “collectie”?

Ben je geïnteresseerd in de technologische uitdagingen die we bij Kunstenpunt aangaan? Volg Tom R. op Twitter!