WWW::Bund

Perl CLI-Client und Bibliothek für deutsche Bundes-APIs (bund.dev)

CPAN Version Tests APIs Languages POD

🚗 Live-Beispiele

Stauabfrage A3

$ bund autobahn roadworks A3
TITEL                                     UNTERTITEL                    GESPERRT
--------------------------------------------------------------------------------
A3 | Rottal-West - Neuhaus am Inn        Passau -> Linz                nein
A3 | Manzing - Isarblick                 Passau -> Nürnberg            nein
A3 | Nürnberg - Brunn                    Halle/Leipzig -> Nürnberg     nein
A3 | Neumarkt-Ost - Deusmauerer Moor     Nürnberg -> Passau            nein
A3 | Wolfstein - Neumarkt-Ost            Nürnberg -> Passau            nein
...

💧 Pegelstände

$ bund pegel stations
STATION                    GEWAESSER  KM
----------------------------------------------
CELLE                      ALLER      1.74
MARKLENDORF                ALLER      38.47
AHLDEN                     ALLER      58.71
RETHEM                     ALLER      82.32
EITZE                      ALLER      107.75
...

📰 Tagesschau-Nachrichten

$ bund tagesschau homepage
SCHLAGZEILE                     TITEL                                    DATUM
-----------------------------------------------------------------------------------------
US-Einschätzung zu Treibhausga  Trump kippt zentrale Vorgabe für Klim... 2026-02-13T04:46
Nach zehn Wochen                ICE-Einsatz in Minnesota wird beendet    2026-02-12T20:29
EU-Gipfel zu Lage der Wirtscha  Gemeinsamer Weg - aber auch gemeinsam.. 2026-02-12T20:36
Klöckner im Gazastreifen        Große Kritik nach kleinem Besuch         2026-02-12T14:04
...

🏛️ Bundestag Plenarkonferenzen

$ bund bundestag conferences
DATUM       NR  SITZUNG
-----------------------------------------------------
28.01.2026  55  55. Sitzung des Deutschen Bundestages
29.01.2026  56  56. Sitzung des Deutschen Bundestages
30.01.2026  57  57. Sitzung des Deutschen Bundestages
25.02.2026  58  58. Sitzung des Deutschen Bundestages
...

🌡️ DWD Wetterwarnungen

$ bund dwd municipality-warnings
WARNUNG                                   EREIGNIS            STUFE  BESCHREIBUNG
------------------------------------------------------------------------------------------------------
Amtliche WARNUNG vor STURMBÖEN            STURMBÖEN           3      Es treten oberhalb 800 m Sturm..
Amtliche WARNUNG vor SCHWEREN STURMBÖEN   SCHWERE STURMBÖEN   3      Es treten oberhalb 1000 m schw..
...

📅 Deutsche Feiertage 2026

$ bund feiertage list
---
NATIONAL:
  Neujahr:
    datum: 2026-01-01
  Karfreitag:
    datum: 2026-04-03
  Ostermontag:
    datum: 2026-04-06
  Tag der Arbeit:
    datum: 2026-05-01
  Christi Himmelfahrt:
    datum: 2026-05-14
  1. Weihnachtstag:
    datum: 2026-12-25
  2. Weihnachtstag:
    datum: 2026-12-26

🚨 NINA Katastrophenwarnungen

$ bund nina mapdata-katwarn
Keine Warnungen.

$ bund nina warnings 091620000000
# (Zeigt aktuelle Warnungen für Kreis mit AGS-Code 091620000000)

✈️ Reisewarnungen

$ bund travelwarning warnings
---
'199124':
  countryCode: PL
  countryName: Polen
  effective: 1768485600
  iso3CountryCode: POL
  title: 'Polen: Reise- und Sicherheitshinweise'
  warning: 0
'200382':
  countryCode: BE
  countryName: Belgien
  effective: 1764837900
  iso3CountryCode: BEL
  title: 'Belgien: Reise- und Sicherheitshinweise'
  warning: 0
...

🏛️ Bundesrat Mitglieder

$ bund bundesrat mitglieder renderXml
---
list:
  employee:
  - firstname: Winfried
    name: Kretschmann
    party: BÜNDNIS 90/DIE GRÜNEN
    state: Baden-Württemberg
    brmitglied: 'true'
  - firstname: Thomas
    name: Strobl
    party: CDU
    state: Baden-Württemberg
    brmitglied: 'true'
...

📊 Dashboard Deutschland

$ bund dashboarddeutschland get
NAME             BESCHREIBUNG
--------------------------------------------------------------
Arbeitsmarkt     Indikatoren zur Erwerbstätigkeit, Kurzarbeit...
Energie          Preisentwicklung verschiedener Energieträger...
Außenhandel      Aktuelle Veränderungen im Außenhandel...
Branchen         Entwicklungen aus Dienstleistungs- und Industrie...
...

🚴 Fahrrad-Zähler (Eco Visio)

$ bund -o json ecovisio counters 4586
[
   {
      "idPdc" : 100044994,
      "nom" : "Long Beach (US)",
      "nomOrganisme" : "Bike Count Display Interactive Map",
      "lat" : 33.75895,
      "lon" : -118.14846,
      ...
   }
]

💊 Hilfsmittel-Verzeichnis (GKV)

$ bund -o json hilfsmittel tree 1
[
   {
      "displayValue" : "01 - Absauggeräte",
      "xSteller" : "01",
      "id" : "835f127b-8355-4ac4-90f8-e3b7ff80ba80"
   },
   {
      "displayValue" : "02 - Adaptionshilfen",
      "xSteller" : "02",
      "id" : "339cc855-29fa-4f9e-b822-e024ed90637b"
   },
   ...
]

🌫️ Luftqualität (Umweltbundesamt)

$ bund luftqualitaet stations
STATION                    STADT                NETZWERK
----------------------------------------------------------
Berlin-Charlottenburg      Berlin               UBA
Dresden-Bergstraße         Dresden              UBA
Hamburg-Sternschanze       Hamburg              UBA
München-Landshuter Allee   München              UBA
...

$ bund luftqualitaet components
KOMPONENTE     BESCHREIBUNG
-------------------------------------------------
PM10          Feinstaub (PM10)
NO2           Stickstoffdioxid
O3            Ozon
...

🌍 Marktstammdaten (Energieanlagen)

$ bund marktstammdaten strom-erzeugung
---
data:
  - EinheitMastrNummer: SEE900000000001
    EinheitSystemstatus: Aktiv
    EinheitBetriebsstatus: InBetrieb
    Nettonennleistung: 1500
    Energietraeger: Solare Strahlungsenergie
  - EinheitMastrNummer: SEE900000000002
    EinheitSystemstatus: Aktiv
    Nettonennleistung: 850
    Energietraeger: Wind
...

📚 Deutsche Digitale Bibliothek

$ bund ddb search Goethe
---
numberOfResults: 125847
results:
  - title: 'Faust. Eine Tragödie'
    subtitle: 'von Johann Wolfgang von Goethe'
    thumbnail: 'https://...'
  ...

🌍 Supported Languages

7 Sprachen mit vollständiger Übersetzung:

🇩🇪 Deutsch • 🇬🇧 English • 🇫🇷 Français • 🇪🇸 Español • 🇮🇹 Italiano • 🇳🇱 Nederlands • 🇵🇱 Polski

Dedizierte Befehle pro Sprache:

bund   autobahn roads   # 🇩🇪 Deutsch (default)
bunden autobahn roads   # 🇬🇧 English
bundfr autobahn roads   # 🇫🇷 Français
bundes autobahn roads   # 🇪🇸 Español
bundit autobahn roads   # 🇮🇹 Italiano
bundnl autobahn roads   # 🇳🇱 Nederlands
bundpl autobahn roads   # 🇵🇱 Polski

Oder mit --lang Flag:

bund --lang en autobahn roads     # Englisch
bund --lang fr nina warnings 123  # Französisch

📦 Installation

cpanm WWW::Bund

Oder aus dem Repository:

git clone https://github.com/Getty/p5-www-bund.git
cd p5-www-bund
cpanm --installdeps .
perl -Ilib bin/bund

🚀 Quick Start

Übersicht anzeigen

bund                    # Zeigt alle verfügbaren APIs
bund list               # Detaillierte API-Liste
bund info autobahn      # Details zu einer API
bund autobahn           # Verfügbare Befehle für autobahn

API-Aufrufe

# Autobahn-API
bund autobahn roads                    # Alle Autobahnen
bund autobahn roadworks A3             # Baustellen auf der A3
bund autobahn warnings A7              # Warnungen auf der A7
bund autobahn webcams A9               # Webcams auf der A9

# Pegel-Online (Wasserstandsdaten)
bund pegel stations                    # Alle Messstationen
bund pegel station WUERZBURG           # Details für eine Station
bund pegel measurements WUERZBURG W    # Wasserstand-Messungen

# Tagesschau
bund tagesschau homepage               # Startseite
bund tagesschau search Ukraine         # Nachrichten suchen

# NINA (Katastrophenwarnungen)
bund nina warnings 091620000000        # Warnungen für Kreis (AGS-Code)
bund nina mapdata-katwarn              # KATWARN Kartendaten

# DWD (Deutscher Wetterdienst)
bund dwd municipality-warnings         # Gemeindewarnungen
bund dwd warnings-nowcast              # Nowcast-Warnungen

# Bundestag
bund bundestag conferences              # Plenarkonferenzen
bund bundestag mdb-index               # Abgeordnete

# Bundesrat
bund bundesrat startlist               # Startliste
bund bundesrat aktuelles               # Aktuelle Meldungen

# Feiertage
bund feiertage list                    # Alle Feiertage (aktuelles Jahr)

# SMARD (Strommarktdaten)
bund smard indices 1 DE hour           # Strommarkt-Indizes

# Reisewarnungen
bund travelwarning warnings            # Alle Reisewarnungen

# Dashboard Deutschland
bund dashboarddeutschland get          # Dashboard-Daten

# Weitere...
bund bundestaglobbyregister search     # Lobbyregister-Suche
bund ecovisio counters 4586            # Fahrrad-Zähler
bund hilfsmittel tree 1                # Hilfsmittel-Verzeichnis

🎨 Output-Formate

Template-basiert (Standard)

Formatierte Tabellen, Listen und Records basierend auf YAML-Templates:

bund pegel stations
# STATION              GEWAESSER       GEWTYPE  LAT      LON
# WUERZBURG            Main            river    49.7994  9.9292
# BAMBERG              Regnitz         river    49.8901  10.8903
# ...

JSON

bund -o json pegel stations
{
  "stations": [
    {
      "shortname": "WUERZBURG",
      "water": {"shortname": "Main", "type": "river"},
      ...
    }
  ]
}

YAML

bund -o yaml pegel stations
---
stations:
  - shortname: WUERZBURG
    water:
      shortname: Main
      type: river

Eigene Templates

bund -t mein_template.yml pegel stations

Template-Beispiel (mein_template.yml):

type: table
columns:
  - field: shortname
    header: STATION
    width: 20
  - field: water.shortname
    header: GEWÄSSER
    width: 15

📊 API Roadmap

✅ Vollständig implementiert (19 APIs, 114 Endpoints)

| API | Endpoints | Beschreibung | Auth | |-----|-----------|-------------|------| | autobahn | 7 | Baustellen, Sperrungen, Webcams, Warnungen, Ladestationen, LKW-Parkplätze | ❌ | | pegel_online | 5 | Pegelstände, Stationen, Gewässer, Zeitreihen, Messwerte | ❌ | | tagesschau | 4 | Nachrichten, Suche, Kanäle, Homepage | ❌ | | nina | 13 | Katastrophenwarnungen, Kartendaten (6 Quellen), Version, Logos, FAQs, Notfalltipps | ❌ | | bundestag | 8 | Redner, Konferenzen, Ausschüsse, Abgeordnete, Artikel, Videos | ❌ | | dwd | 5 | Wetterwarnungen (Gemeinde/Küste/Nowcast), Stationsdaten, Crowdmeldungen | ❌ | | feiertage | 1 | Deutsche Feiertage nach Bundesland/Jahr | ❌ | | smard | 3 | Strommarktdaten (Indizes, Zeitreihen, Tabellen) | ❌ | | bundeshaushalt | 1 | Bundeshaushalt-Daten | ❌ | | bundesrat | 10 | Startliste, Aktuelles, Termine, Plenum, Mitglieder, Präsidium | ❌ | | bundestag_lobbyregister | 1 | Lobbyregister-Suche | ❌ | | dashboard_deutschland | 3 | Dashboard-Daten, Indikatoren, GeoJSON | ❌ | | travelwarning | 6 | Reisewarnungen, Vertretungen, Länder-Info, Gesundheit | ❌ | | eco_visio | 2 | Fahrrad-Zähler, Zähldaten | ❌ | | hilfsmittel | 7 | GKV Hilfsmittelverzeichnis (Baum, Produkte, Gruppen) | ❌ | | luftqualitaet | 13 | Luftqualität (Komponenten, Messungen, Stationen, Metadaten) | ❌ | | marktstammdaten | 8 | Marktstammdatenregister (Strom/Gas Filter + Daten) | ❌ | | pflanzenschutzmittelzulassung | 6 | Pflanzenschutzmittel (Mittel, Wirkstoffe, Anwendungen) | ❌ | | abfallnavi | 10 | Abfallkalender (Orte, Straßen, Termine mit Region-Parameter) | ❌ |

Total: 114 Endpoints über 19 APIs

⚠️ Deaktiviert (Auth erforderlich)

| API | Endpoints | Status | Grund | |-----|-----------|--------|-------| | ladestationen | 1 | Deaktiviert | ArcGIS FeatureServer benötigt Token (seit 2026) |

Hinweis: Das Ladesäulenregister der Bundesnetzagentur hat die öffentliche GeoJSON-Datei entfernt und auf einen authentifizierten ArcGIS FeatureServer umgestellt.

🔄 In Arbeit / Eingeschränkt (2 APIs)

| API | Endpoints | Status | Details | |-----|-----------|--------|---------| | abfallnavi | 10 | Needs Implementation | Requires {region} parameter substitution in base_url | | destatis | 4 | Partial Auth Required | Only find works with guest credentials (GAST/GAST), other endpoints need registered account |

🔐 Authentifizierung erforderlich (nicht geplant)

Diese APIs benötigen API-Keys und sind daher für den öffentlichen CLI-Client nicht vorgesehen:

🗂️ Cache

API-Antworten werden automatisch gecacht:

$XDG_CACHE_HOME/www-bund/responses/
# Fallback: ~/.cache/www-bund/responses/

Cache-TTLs (automatisch pro Endpoint):

| TTL | Typ | Beispiele | |-----|-----|-----------| | 120s | Notfälle | NINA-Warnungen, DWD-Wetterwarnungen, Autobahn-Warnungen | | 300s | Echtzeit | Tagesschau, Pegel-Messwerte, Baustellen, Bundesrat Aktuelles | | 1800s | Moderat | Webcams, Suche, Strommarkt-Zeitreihen, Reisewarnungen | | 86400s | Statisch | Straßenlisten, Stationslisten, Feiertage, Metadaten |

Cache löschen:

rm -rf ~/.cache/www-bund/

Oder programmatisch:

use WWW::Bund;
WWW::Bund->new->cache->clear;

🏗️ Architektur

CLI (MooX::Cmd + MooX::Options)

bin/bund                              Deutsch (via ENV)
bin/bunden                            Englisch (via ENV)
bin/bundfr/bundes/bundit/bundnl/bundpl  Weitere Sprachen

lib/WWW/Bund/CLI.pm                   Root CLI (globale Options, Helper)
lib/WWW/Bund/CLI/Role/APICommand.pm   Shared Role für API-Commands
lib/WWW/Bund/CLI/Cmd/*.pm             22 API-Command-Klassen (~10 LOC each)
lib/WWW/Bund/CLI/Cmd/{List,Info}.pm   Meta-Commands
lib/WWW/Bund/CLI/Formatter.pm         Template-Rendering
lib/WWW/Bund/CLI/Strings.pm           i18n Strings

Core Library

lib/WWW/Bund.pm                       Haupt-Client
lib/WWW/Bund/Registry.pm              API- und Endpoint-Registry
lib/WWW/Bund/Caller.pm                HTTP-Aufrufe mit Auth/Cache/RateLimit
lib/WWW/Bund/Cache.pm                 Disk-Cache (XDG-konform)
lib/WWW/Bund/Auth.pm                  Auth-Header pro API
lib/WWW/Bund/RateLimit.pm             Rate-Limiting pro API
lib/WWW/Bund/LWPIO.pm                 LWP-basierter IO-Adapter
lib/WWW/Bund/HTTPRequest.pm           Request-Objekt
lib/WWW/Bund/HTTPResponse.pm          Response-Objekt
lib/WWW/Bund/Response::{JSON,XML,Raw}.pm  Response-Parser
lib/WWW/Bund/API/*.pm                 Typed API-Adapter (optional)

Data Files

share/registry.yml                    31 API-Definitionen
share/endpoints.yml                   115 Endpoint-Definitionen (114 aktiv, 1 deaktiviert)
share/templates/{de,en,fr,es,it,nl,pl}/*.yml  ~900 Templates (7 Sprachen)
share/strings/{de,en,fr,es,it,nl,pl}.yml      7 Strings-Dateien

🌐 Neue Sprache hinzufügen

  1. Strings-Datei erstellen:
cp share/strings/en.yml share/strings/xx.yml
# Alle Werte übersetzen (Keys NICHT ändern)
  1. Template-Ordner erstellen:
mkdir share/templates/xx
cp share/templates/en/* share/templates/xx/
# Nur `header:` und `empty:` Felder übersetzen
  1. Verwenden:
bund --lang xx autobahn roads

🪟 Windows EXE

Standalone .exe ohne Perl-Installation via PAR::Packer:

# Mit Strawberry Perl
pp -x -M LWP::Protocol::https -M Moo -a "share/;share/" -o bund.exe bin/bund

Wichtig:

Alternative: Strawberry Perl Portable als ZIP.

📚 Dokumentation

Alle 46 Module haben vollständige POD-Dokumentation:

perldoc WWW::Bund                    # Hauptmodul
perldoc WWW::Bund::CLI               # CLI-Dokumentation
perldoc WWW::Bund::API::Autobahn     # API-Adapter
perldoc bund                         # Bin-Command

POD-Features:

Umfang:

🧪 Tests

prove -l t/                        # Alle Tests (290)
prove -l t/00-load.t               # Module loading
prove -l t/cli.t                   # CLI-Funktionalität
WWW_BUND_LIVE_TEST=1 prove -l t/integration.t  # Live-API-Tests

📝 Lizenz

Dieses Modul ist freie Software. Es kann unter denselben Bedingungen wie Perl selbst weiterverbreitet und/oder modifiziert werden.

👥 Autor

Torsten Raudssus (GETTY) torsten@raudss.us