3.8 KiB
Raw Blame History

OSMCal → Mobilizon Importer

EN: Import events from OSMCal into a Mobilizon group, e.g. rheinneckar.events.

DE: Importiert Veranstaltungen aus dem OpenStreetMap Calendar nach Mobilizon, filtert sie lokal nach Entfernung um Heidelberg und legt sie als Gruppenveranstaltungen an.


Features / Funktionen

EN:

  • Fetches German OSMCal events via API
  • Filters events by radius around Heidelberg
  • Reads the original description from each events .ics file
  • Imports into Mobilizon via GraphQL
  • Supports Mobilizon group posting
  • Avoids duplicate imports using a local state file

DE:

  • Lädt deutsche OSMCal-Veranstaltungen über die API
  • Filtert Veranstaltungen nach Radius um Heidelberg
  • Liest die Originalbeschreibung aus der jeweiligen .ics-Datei
  • Importiert nach Mobilizon per GraphQL
  • Unterstützt Veröffentlichung als Mobilizon-Gruppe
  • Verhindert doppelte Importe über eine lokale Statusdatei

Requirements / Voraussetzungen

  • Python 3
  • Mobilizon account
  • Membership in the target Mobilizon group
  • OAuth token for the Mobilizon API
  • Empfehlung: Linux

Install dependencies:

python3 -m venv .venv
source .venv/bin/activate
pip install requests python-dotenv icalendar

auf dem eigenen Rechner voraussetzungen schaffen

Verzeichnis erstellen und darin ausführen:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Configuration / Konfiguration

Create a .env file:

MOBILIZON_INSTANCE="https://rheinneckar.events"
MOBILIZON_TOKEN="API token"
MOBILIZON_ORGANIZER_ACTOR_ID="profile actor ID"
MOBILIZON_ATTRIBUTED_TO_ID="group actor ID"

The helper script setup-mobilizon.py can create this .env file.

Mit dem hilfsscript setup-mobilizon.py lässt sich die .env Datei automatisch befüllen.

Usage / Nutzung

Run the importer:

source .venv/bin/activate
./import-osmcal-to-mobilizon.py

Example output:

70 Veranstaltungen aus OSMCal geladen

9 Veranstaltungen im 15-km-Umkreis um Heidelberg

Fertig. Importiert: 9, übersprungen: 0

Settings / Einstellungen

Edit these values in import-osmcal-to-mobilizon.py.

Diese Werte in der Datei import-osmcal-to-mobilizon.py anpassen

Radius / Radius um die angegebenen Koordinaten

RADIUS_KM = 18.0

Draft mode / Entwurfsmodus

DRAFT = True

Creates drafts / Veranstaltungen werden als Entwurf veröffentlicht.

DRAFT = False

Publishes directly / Veranstaltungen werden direkt veröffentlicht.

Event duration / Veranstaltungsdauer

EVENT_DURATION_HOURS = 3

Duplicate handling / Umgang mit bereits importierten Veranstaltungen

Imported events are stored in:

Importierte Veranstaltungen werden in folgender Datei gespeichert:

imported-osmcal-events.json

Events listed there are skipped on future runs.

Veranstaltungen in dieser Datei werden bei einem erneuten Lauf des Skriptes übersprungen.

Reset for a new test / Zurücksetzen vor einen neuen Lauf:

echo '{}' > imported-osmcal-events.json

Delete old Mobilizon drafts or events first, otherwise duplicates may be created.

Vorher alte Entwürfe oder Events in Mobilizon löschen, sonst entstehen Duplikate.

Notes / Hinweise

EN:

  • Existing Mobilizon events are not updated.
  • Existing drafts are not automatically published.
  • If DRAFT is changed from True to False, already imported events are still skipped.
  • The access token may expire and then has to be renewed.
  • This script has contents generated by ai.

DE:

  • Bestehende Mobilizon-Events werden nicht aktualisiert.
  • Bestehende Entwürfe werden nicht automatisch veröffentlicht.
  • Wenn DRAFT von True auf False geändert wird, werden bereits importierte Events trotzdem übersprungen.
  • Der Access-Token kann ablaufen und muss dann erneuert werden.
  • Dieses Script wurde in Zusammenarbeit mit einer KI erarbeitet.