Dutch Composers Now tafel
Automatische kalender informatie ophalen van tientallen partners
Aanleiding
Dutch Composers NOW is een onafhankelijke stichting en het collectieve propagandabureau van de nieuwe muziek. Doel is zoveel mogelijk airplay te genereren voor componisten en de exploitatie mogelijkheden te vergroten. Dit doen we samen met het hele netwerk van componisten, uitgevers, programmeurs, podia, festivals en muziekliefhebbers. Naast verschillende activiteiten zoals de jaarlijkse Dag van de Componist, een eigen compositiefonds, infiltratie programma is ruim ene jaar geleden het consumenten platform New Music NOW gelanceerd. De ontwikkeling daarvan gaat door.
New Music NOW is een dedicated componist-gedreven muziekplatform, dat alle informatie over nieuwe muziek op één plek biedt. Samen met het hele muzieknetwerk bouwt New Music NOW aan een groeiende community van liefhebbers en geïnteresseerden rond het werk van Nederlandse componisten van nu.
Het platform publiceert de agenda voor komende concerten, artikelen, interviews en een directory van het aangesloten netwerk. Daarnaast is New Music NOW een videoplatform met grote hoeveelheid zelf geproduceerde of gecureerde videocontent.
New Music NOW heeft een actief redactioneel en social media beleid en is een katalysator voor meer airplay door een hechte samenwerking met NTR, VPRO, NPO Radio4 en een eigen televisieprogramma.
Doel
Het doel is om relevante content vanuit het platform ook uit te kunnen serveren naar de websites van aangesloten partners is een player ontwikkeld die videocontent voorziet van layers met de mogelijkheid om redactionele teksten, interviews en gerelateerde videocontent toe te voegen. Het geheel wordt als I-frame vanuit CMS uit geserveerd. https://newmusicnow.nl/verken/article/november-music-in-beeld
De inzet van de player op websites van partners zal de komende periode een grotere omvang krijgen.
In de ‘one stop shop’ servicefunctie van New Music NOW is het aanbod van een accurate agenda van concerten, events en releases van groot belang. Naast de onmiskenbare redactionele component willen we zo geautomatiseerd mogelijk kalenderdata van relevante events binnen halen van onze netwerkpartners; podia, festivals, ensembles, componisten. Een globale duiding van het werkveld: - er is een kern van ca 10 partijen met 50+ relevante events, - er zijn 100+ netwerkpartners met kleiner aanbod van relevante events - netwerkpartners met 100% relevante eigentijdse muziek - netwerkpartners met gedeeltelijk relevant
Scope
We willen onderzoeken hoe onze partners eenvoudig het volgende kunnen doen: - 1 keer op hun eigen website in voeren en bij houden. - wijzigingen automatisch meenemen (annuleringen, verplaatsingen, etc) - selecties / tags kunnen maken (jazz, wereld, hedendaags, elektronisch) die relvant zijn voor de selectie - beschikbaar maken van NMN agenda voor partners (vergelijkbaar met inzet player)
Team
Jos Eilert
Esther Gottschalk
Resultaten Hackathon
Concept
Aanbevelingen voor de toekomst
Code
https://newmusicnow.nl/api/ddw
Route::get('/ddw', function() { $blocks = \A17\Twill\Models\Block::where('type', 'agenda') ->with('children') ->get(); if (\Cache::has('ddw')) { $response = \Cache::get('ddw'); } else { $response = $blocks->map(function($item) { return \Spatie\SchemaOrg\Schema::EventVenue() ->name($item->content['location'] ?? 'undefined') ->address( \Spatie\SchemaOrg\Schema::PostalAddress() ->addressLocality($item->content['place'] ?? 'undefined') )->event( $item->children->map(function($child) use ($item) { if($item->blockable) { return \Spatie\SchemaOrg\Schema::Event() ->name($item->blockable->title ?? 'undefined') ->description($item->blockable->description ?? 'undefined') ->url($item->content['url'] ?? 'undefined') ->mainEntityOfPage( isset($item->blockable->slug) ? route('site.projects.show', ['slug' => $item->blockable->slug]) : 'undefined' ) ->startDate($child->content['start'] ?? 'undefined') ->endDate($child->content['end'] ?? 'undefined') ->keywords( array_merge( $item->blockable->creators->pluck('full_name')->toArray(), $item->blockable->organizations->pluck('name')->toArray(), $item->blockable->genres->pluck('name')->toArray(), ) ); } })->toArray() ); }); \Cache::put('ddw', $response); } return response()->json($response->groupBy('name')->sortKeys()); });