Hintergrund

Beim MÜNSTERHACK 2019 entstand in einem Projekt-Team die Idee, eine Termin-Plattform für Münster zu bauen. Die Probleme, die gelöst werden sollten, waren:
- Es gibt in Münster sehr viele Webseiten für Termine
- Nirgendwo findet man eine zentrale Übersicht
- Die meisten Anbieter von Veranstaltungsdaten bietet keine offene Schnittstelle zum Abruf der Termine an
- Bei den vergangenen MÜNSTERHACKs konnten schon mehrere Projekte nicht erfolgreich durchgeführt werden, da sie Münsteraner Veranstaltungsdaten benötigt hätten
Lösungsansatz
Im Team "Münster Info Hub" kam die Idee auf, eine Suchmaschine für Veranstaltungen zu bauen, die die einschlägigen Termin-Webseiten durchsucht, und die Daten aller gefundenen Termine indiziert. Diese Veranstaltungsdaten werden dann in eine Datenbank geschrieben und offen in einem einheitlichen Format maschinenlesbar und kostenfrei für alle Interessenten als "Open Data" zur Verfügung gestellt.
+----------+ +----------+ | | | | +------------------+ | A* | | B* | <------+ | | +----------+ +----------+ | | Anwendungsidee 1 | | | | +----------------+ + +------------------+ +--------------------+ +------------------+ +----+ | | | | | | | D* | | C* | | MÜNSTER.JETZT | | MÜNSTER.JETZT | +------------------+ | | +----------------+ <---------+ | | <---+ | | <----+ | | +----+ | Suchmaschine | | Offene Datenbank | | Anwendungsidee 2 | +---------------+ + | | | | | | | | | +------------------+ +--------------------+ +------------------+ | E* | <---------+ | | +------------------+ +---------------+ | | | ..... | *Für Münster relevante | | Veranstaltungs-Webseiten +------------------+
API-Dokumentation
Die Rest-API kann angesprochen werden unter der folgenden Adresse:
https://api.muenster.jetzt/msinfohub-events/_search
Es handelt sich um eine zur Elasticsearch REST-API kompatible API-Schnittstelle.
Datentypen
Eine Beschreibung der zurückgelieferten Werte und der verwendeten Datentypen findet sich unter:
https://api.muenster.jetzt/msinfohub-events
{
"title",
"subtitle", // (optional)
"start_date": "2008-03-01T13:00:00Z",
"end_date": "2008-03-01T15:00:00Z", // (optional)
"description", // (optional)
"link",
"category", // (optional)
"location_name",
"location_address", // (optional)
"source", // origin of these data
"tags": [ // (optional)
"bla", ...
],
"geo": {
"lat": "51.956944",
"lon": "7.005556"
},
"images":[
{
"image_url", // (optional)
"image_text", // (optional)
"image_copyright" // (optional)
}
], // (optional)
}
Abfragen
Im Folgenden werden ein paar gängige Beispiel-Abfragen gezeigt:-
Termine mit Suchbegriff finden:
https://api.muenster.jetzt/msinfohub-events/_search?q=konzert -
In einem bestimmten Feld nach einem Wert suchen:
https://api.muenster.jetzt/msinfohub-events/_search?q=source:muenster.de -
Sortieren der Ergebnisse, z.B. nach dem Startdatum:
https://api.muenster.jetzt/msinfohub-events/_search?sort=start_date -
Anzhal der Suchergebnisse einschränken:
https://api.muenster.jetzt/msinfohub-events/_search?size=10
Komplexere Abfragen
Beispiel-Query:https://api.muenster.jetzt/infohub/_search?_source=source,geo,start_date&size=200&q=start_date:%3Enow
Erklärung der Beispiel-Query:
- Parameter "q" fragt in diesem Fall nur Events ab, die start_date in der Zukunft haben
- Wegen "_source"-Parameter werden nur die Felder source, geo, start_date zurückgegeben Durch "size" werden maximal 200 results returnt
Weiterführende Links
- Wie die Abfragesprache im Parameter “q” funktioniert:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html -
Hier steht wie man nur einzelne Felder zurückbekommt:
https://www.elastic.co/guide/en/elasticsearch/reference/7.3/docs-get.html#docs-get -
Weitere Informationen in unserem Github-Repository:
https://github.com/codeformuenster/muenster-info-hub