eventlens

eventlens ist ein selbst gehostetes MVP zum Beobachten von Kuenstlern und Events in Hamburg oder ganz Deutschland.

Funktionen

  • Watchlist fuer Kuenstler oder Events
  • Regionen hamburg und germany
  • Geplanter Event-Abgleich ueber mehrere Quellen
  • E-Mail-Benachrichtigung bei neu gefundenen Terminen
  • Markierung, ob Tickets gekauft wurden
  • Erinnerung etwa eine Woche vor dem Termin
  • Webfrontend ohne separaten Build-Step
  • Docker-Deployment hinter NGINX

Projektstruktur

  • backend/: FastAPI-Anwendung
  • deploy/nginx/eventlens.conf: Beispiel fuer Reverse Proxy
  • docker-compose.yml: App- und Datenbank-Container

Start

cp .env.example .env
docker compose up -d --build

Danach ist das Webfrontend lokal unter http://127.0.0.1:8000 erreichbar. Die Swagger-Oberflaeche liegt unter http://127.0.0.1:8000/docs. API-Statusinfo findest du unter http://127.0.0.1:8000/api.

Wichtige Umgebungsvariablen

  • TICKETMASTER_API_KEY: Ticketmaster Discovery API
  • BANDSINTOWN_APP_ID: echte Bandsintown App-ID fuer Artist-Events
  • EVENTIM_ENABLED: aktiviert den Eventim-Website-Provider
  • NOTIFICATION_EMAIL_TO: Empfaenger fuer Benachrichtigungen
  • SMTP_HOST, SMTP_USER, SMTP_PASS: SMTP-Zugang fuer E-Mails

Beispielablauf

  1. Watch Item anlegen:
curl -X POST http://127.0.0.1:8000/watch-items \
  -H "Content-Type: application/json" \
  -d '{
    "name": "AnnenMayKantereit",
    "watch_type": "artist",
    "region_scope": "hamburg"
  }'
  1. Sync manuell anstossen:
curl -X POST http://127.0.0.1:8000/sync
  1. Events abfragen:
curl http://127.0.0.1:8000/events
  1. Ticketkauf markieren:
curl -X PATCH http://127.0.0.1:8000/events/1/purchase \
  -H "Content-Type: application/json" \
  -d '{"is_ticket_purchased": true}'

Hinweise fuer Debian 13 und NGINX

  • NGINX kann nativ auf dem Host laufen und auf 127.0.0.1:8000 proxyen.
  • Das Backend lauscht absichtlich nur auf 127.0.0.1, damit es nicht direkt aus dem Internet erreichbar ist.
  • Fuer produktiven Betrieb solltest du TLS im NGINX-Terminator aktivieren.
  • Das Frontend wird direkt vom FastAPI-Container ausgeliefert, es ist kein Node- oder Build-Container noetig.

Bekannte Betriebsfalle

Wenn MariaDB bereits mit aelteren Zugangsdaten initialisiert wurde, reicht eine Aenderung in .env allein nicht aus. In dem Fall bleibt das Docker-Volume bestehen und der App-User in MariaDB hat noch das alte Passwort.

Zum Angleichen auf die aktuellen Werte aus .env:

cd /opt/eventlens
sudo bash scripts/fix-db-user.sh

Wenn dir die Datenbank egal ist und du komplett frisch starten willst:

cd /opt/eventlens
sudo docker compose down -v
sudo docker compose up -d --build

Naechste sinnvolle Ausbaustufen

  • Web-Frontend fuer Watchlist und Events
  • Weitere Datenquellen neben Ticketmaster
  • Telegram oder Push-Benachrichtigungen
  • Nutzerverwaltung

Provider-Hinweise

  • Ticketmaster nutzt die offizielle Discovery API.
  • Bandsintown nutzt die offizielle Artist-Events-API und arbeitet deshalb vor allem fuer Watchlist-Eintraege vom Typ artist.
  • Eventim nutzt eine beobachtete oeffentliche JSON-Web-API von eventim.de. Das ist keine offiziell dokumentierte Developer-API, aber stabiler als HTML-Scraping. Aenderungen an diesem Web-Endpoint koennen trotzdem Anpassungen noetig machen.
  • Eventim kann serverseitig durch Eventim/Akamai geblockt werden. In dem Fall liefert eventlens bewusst keine falschen Treffer, sondern ueberspringt den Provider und schreibt einen Hinweis ins Backend-Log.
  • Bandsintown benoetigt eine echte, von Bandsintown freigeschaltete App-ID. Ohne diese wird der Provider deaktiviert oder als blocked angezeigt.
  • Barclays Arena wird ueber die offizielle Eventseite der Arena abgefragt.
  • Fabrik wird ueber die offizielle Veranstaltungsseite der Fabrik Hamburg abgefragt.
Description
No description provided
Readme 90 KiB
Languages
Python 63.1%
JavaScript 17.2%
CSS 10.8%
HTML 7.4%
Shell 1.5%