pydipapi

pydipapi - Python Client für die deutsche Bundestag API

PyPI version Documentation License: MIT Python 3.9+

Ein moderner, vollständiger Python-Client für die deutsche Bundestag API (DIP) mit erweiterten Funktionen für Batch-Operationen, Caching und Performance-Optimierung.

🚀 Features

📦 Installation

pip install pydipapi

🔑 API-Key erhalten

  1. Besuchen Sie https://dip.bundestag.de/über-dip/hilfe/api
  2. Registrieren Sie sich für einen API-Key
  3. Setzen Sie die Umgebungsvariable: export DIP_API_KEY='ihr_api_key'

🎯 Schnellstart

from pydipapi import DipAnfrage

# Client initialisieren
dip = DipAnfrage(api_key='ihr_api_key')

# Personen abrufen
persons = dip.get_person(anzahl=10)

# Dokumente durchsuchen
docs = dip.search_documents("Bundeshaushalt", anzahl=5)

# Batch-Operationen
person_ids = [12345, 67890, 11111]
persons_batch = dip.get_person_ids(person_ids)

# Convenience-Methoden
recent_activities = dip.get_recent_activities(days=7)

📚 Dokumentation

Die vollständige Dokumentation ist verfügbar unter: https://lichtbaer.github.io/pydipapi/

Dokumentationsseiten

📓 Jupyter Notebooks

Interaktive Tutorials für praktisches Lernen (im notebooks/ Verzeichnis):

🔧 Konfiguration

# Erweiterte Konfiguration
dip = DipAnfrage(
    api_key='ihr_api_key',
    rate_limit_delay=0.1,    # 100ms zwischen Requests
    max_retries=3,           # Maximale Wiederholungsversuche
    enable_cache=True,        # Caching aktivieren
    cache_ttl=3600           # Cache-TTL in Sekunden
)

📊 Verfügbare Endpunkte

Endpunkt Beschreibung Batch-Support
get_person() Personen abrufen
get_aktivitaet() Aktivitäten abrufen
get_drucksache() Dokumente abrufen
get_plenarprotokoll() Protokolle abrufen
get_vorgang() Vorgänge abrufen
get_vorgangsposition() Vorgangspositionen abrufen

🔍 Filter-Optionen

Parameter Beschreibung Beispiel
wahlperiode Legislaturperiode wahlperiode=20
datum_start / datum_end Datumsbereich datum_start="2024-01-01"
titel Titel-Suche titel="Bundeshaushalt"
drucksachetyp Dokumenttyp drucksachetyp="Antrag"
vorgangstyp Vorgangstyp vorgangstyp="Gesetzgebung"

🚀 Convenience-Methoden

# Suche nach Dokumenten
docs = dip.search_documents("Klimaschutz", anzahl=10)

# Aktuelle Aktivitäten
recent = dip.get_recent_activities(days=7)

# Personen nach Namen suchen
persons = dip.get_person_by_name("Merkel", anzahl=5)

# Dokumente nach Typ
anträge = dip.get_documents_by_type("Antrag", anzahl=10)

# Vorgänge nach Typ
gesetzgebung = dip.get_proceedings_by_type("Gesetzgebung", anzahl=10)

📈 Performance-Optimierung

Caching

# Cache aktivieren
dip = DipAnfrage(api_key='key', enable_cache=True, cache_ttl=7200)

# Cache verwalten
dip.clear_cache()           # Gesamten Cache löschen
dip.clear_expired_cache()   # Abgelaufene Einträge löschen

Batch-Operationen

# Mehrere IDs auf einmal abrufen
person_ids = [12345, 67890, 11111]
persons = dip.get_person_ids(person_ids)

doc_ids = [12345, 67890]
docs = dip.get_drucksache_ids(doc_ids, text=True)

🛠️ Entwicklung

Installation für Entwicklung

git clone https://github.com/lichtbaer/pydipapi.git
cd pydipapi
pip install -e .
pip install -r requirements-dev.txt

Tests ausführen

pytest tests/

Linting

ruff check .
bandit -r pydipapi/

Dokumentation lokal bauen

mkdocs serve

📝 Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe LICENSE für Details.

🤝 Beitragen

Beiträge sind willkommen! Bitte lesen Sie den Entwickler-Guide für Details.

Entwicklungsumgebung einrichten

  1. Repository klonen
  2. Virtuelle Umgebung erstellen
  3. Abhängigkeiten installieren: pip install -r requirements-dev.txt
  4. Pre-Commit Hooks installieren: pre-commit install
  5. Tests ausführen: pytest tests/

Pull Request Guidelines

📞 Support

🙏 Danksagungen

📊 Projekt-Status


Hinweis: Dieses Projekt ist nicht mit dem deutschen Bundestag affiliiert. Für offizielle Informationen besuchen Sie https://dip.bundestag.de/.