3.4 KiB
Raw Blame History

OSMCal → Mobilizon Importer

EN: Import events from OSMCal into a Mobilizon group, e.g. https://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

  • Fetches German OSMCal events via API
    Lädt deutsche OSMCal-Veranstaltungen über die API

  • Filters events by radius around Heidelberg
    Filtert Veranstaltungen nach Radius um Heidelberg

  • Reads the original description from each events .ics file
    Liest die Originalbeschreibung aus der jeweiligen .ics-Datei

  • Imports into Mobilizon via GraphQL
    Importiert nach Mobilizon per GraphQL

  • Supports Mobilizon group posting
    Unterstützt Veröffentlichung als Mobilizon-Gruppe

  • Avoids duplicate imports using a local state file
    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

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:
```bash
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.

## Usage / Nutzung

Run the importer:
```bash
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 dieser Datei 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:
imported-osmcal-events.json

Veranstaltungen in dieser Datei werden bei einem erneuten Lauf des Skriptes übersprungen.
Events listed there are skipped on future runs.

Reset for a new test / Zurücksetzen vor einen neuen Lauf:
```bash
echo '{}' > imported-osmcal-events.json

Vorher alte Entwürfe oder Events in Mobilizon löschen, sonst entstehen Duplikate.
Delete old Mobilizon drafts or events first, otherwise duplicates may be created.

Notes / Hinweise

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.

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.