Dutch Composers Now tafel

Uit Living Lab Open Cultuurdata
Naar navigatie springen Naar zoeken springen

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());
});