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.
Description
Zapft die API von osmcal.org an, liest die Veranstaltungen im Umkreis aus und postet über die API von Mobilizon Veranstaltungen zur Veranstaltungsseite als Benutzer oder Gruppe.
Readme 82 KiB
Languages
Python 100%