3.8 KiB
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 event’s
.icsfile - 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.