Eine kleine Python-App, die aus Live-Daten der API Ninjas – Animals API eine Website mit Tierkarten generiert.
Die Nutzer:innen geben einen Tiernamen ein (z. B. Fox, Monkey) und das Script erzeugt eine HTML-Seite mit Ergebnissen.
Fehler- und Leerzustände (keine Treffer) werden freundlich angezeigt.
- Features
- Technik & Architektur
- Voraussetzungen
- Installation
- Konfiguration (.env)
- Projektstruktur
- Benutzung
- Template-Hinweis
- Styling
- Troubleshooting
- Quality Guidelines
- Contributing
- Roadmap
- Lizenz
- Live-Datenabruf über API Ninjas (
/v1/animals?name=<query>). - Klare Trennung:
data_fetcher.py– API-Client (Requests + Dotenv)animals_web_generator.py– erzeugt HTML aus den Daten
- Kartenlayout für Tierinfos (Name, Diet, Location, Type, u. a.).
- Empty State: Bei 0 Treffern wird eine freundliche Meldung ins Template gerendert.
- Robust gegen fehlende Felder (defensive Serialisierung).
- Python: 3.9+ (läuft meist auch ab 3.8)
- Abhängigkeiten:
requests(HTTP)python-dotenv(lädt.env)
- Datenquelle: API Ninjas Animals API (API-Key erforderlich)
- Trennung von Concerns:
- Der Generator importiert den Fetcher und kümmert sich nur um Darstellung.
- Der Fetcher kapselt Auth, Endpunkt, Normalisierung.
- Python 3.9 oder neuer
- Internetzugang
- API-Key von API Ninjas – Animals API
# 1) Repository klonen oder Projektordner öffnen
# 2) Abhängigkeiten installieren
python3 -m pip install -r requirements.txt
data_fetcher.pylädt die Variablen automatisch über python-dotenv.
- Erstelle im Projektroot eine Datei
.env. - Trage deinen API-Key ein:
# .env API_NINJAS_KEY=DEIN_API_KEY_HIER # optionaler Alias: # API_KEY=DEIN_API_KEY_HIER
- Nicht committen – füge
.envin die.gitignoreein:# secrets .env
data_fetcher.pylädt die Variablen automatisch über python-dotenv.
. ├─ animals_web_generator.py # CLI: fragt nach Tiernamen, rendert HTML ├─ data_fetcher.py # API-Client (requests + dotenv) ├─ animals_template.html # Template mit Platzhalter REPLACE_ANIMALS_INFO ├─ style.css # Karten- & Empty-State-Styling ├─ requirements.txt └─ README.md
python3 animals_web_generator.py
- Please enter an animal: Fox
- Website was successfully generated to the file animals.html.
Dein animals_template.html muss den Platzhalter enthalten, damit die Karten injiziert werden können:
-
__REPLACE_ANIMALS_INFO__
Bei 0 Treffern (z. B. Fantasiebegriff) rendert der Generator einen Empty-State:
Try a different name (e.g., "Fox", "Bear", "Eagle").
…
Das Styling liegt in style.css (Cards & Empty-State). Passe Farben/Abstände dort an, das HTML bleibt unverändert (semantische Klassen wie .cards__item, .card__title, .card__facts usw.).
401 – Invalid API key
Prüfe .env (richtiger Key? keine Anführungszeichen/Zeilenumbrüche).
Ist die Variable korrekt benannt? API_NINJAS_KEY (oder API_KEY als Fallback).
Teste schnell im REPL:
from data_fetcher import fetch_data
print(len(fetch_data("Fox", api_key="DEIN_KEY")))
0 Ergebnisse
Benutze einen allgemeineren Suchbegriff (Fox statt Arctic Fox).
API gerade down? Versuche später erneut.
429 – Rate limit
Warte kurz und versuche erneut.
Optional: Backoff/Retry im data_fetcher.py ergänzen.
.env wird nicht geladen
Liegt .env wirklich im Projektroot (wo du das Script startest)?
python-dotenv installiert?
Alternativ Key als Env setzen:
export API_NINJAS_KEY='DEIN_KEY'
python3 animals_web_generator.py
- Keine Secrets im Code: .env verwenden, .gitignore enthält .env.
- Saubere Imports: requests nur im Fetcher, nicht im Generator.
- Konstanten im data_fetcher.py: API_URL, TIMEOUT, (indirekt) API_KEY via .env.
- Fehlertoleranz: Beim Rendern nur vorhandene Felder ausgeben; leere Strings vermeiden.
- PEP 8: Einrückungen, Zeilenlängen, Funktionen mit klaren Namen.
Pull Requests willkommen!
- Forken & Branch erstellen: git checkout -b feat/dein-feature
- Änderungen committen, Tests/Manu-Checks durchführen.
- PR mit Beschreibung eröffnen.
MIT — nutze frei und passe nach Bedarf an.