API-Modus¶
Nicht-interaktive JSON-API für Skripte, Automatisierung und Integration mit anderen Tools.
Übersicht¶
Der API-Modus bietet JSON-Ausgabe für alle Operationen und erleichtert: - Integration mit Skripten - Automatisierung von Workflows - Erstellung benutzerdefinierter Schnittstellen - Verbindung mit anderen Tools
Alle API-Befehle unterstützen die Anbieterauswahl über die Option --provider (oder -p). Damit können Sie für jede Operation auswählen, welche Anime-Quelle verwendet werden soll.
Anbieterauswahl¶
Verfügbare Anbieter¶
Verwenden Sie den Befehl providers, um alle verfügbaren Anbieter anzuzeigen:
Antwort:
[
{
"name": "animecix",
"lang": "tr",
"region": "TR",
"class": "AnimecixProvider",
"disabled": false
},
{
"name": "hianime",
"lang": "en",
"region": "US",
"class": "HiAnimeProvider",
"disabled": false
},
{
"name": "aniworld",
"lang": "de",
"region": "DE",
"class": "AniWorldProvider",
"disabled": false
},
{
"name": "docchi",
"lang": "pl",
"region": "PL",
"class": "DocchiProvider",
"disabled": false
}
]
Anbieterkategorien¶
Türkische Anbieter:
- animecix - Standard türkischer Anbieter
- turkanime - Alternative türkische Quelle
- anizle - Türkisches Anime-Streaming
- weeb - Türkische Anime-Quelle
Englische Anbieter:
- hianime - Hochwertiges englisches Anime
- allanime - Umfassende englische Quelle
Deutsche Anbieter:
- aniworld - Deutsches Anime-Streaming
Polnische Anbieter:
- docchi - Polnische Anime-Quelle
Anbieter verwenden¶
Alle Befehle akzeptieren die Option --provider oder -p:
# Suche mit bestimmtem Anbieter
weeb-cli api search "Naruto" --provider hianime
# Episoden von türkischer Quelle abrufen
weeb-cli api episodes "anime-id" --provider turkanime
# Von deutschem Anbieter herunterladen
weeb-cli api download "anime-id" -s 1 -e 1 --provider aniworld
Standard-Anbieter: Wenn --provider nicht angegeben wird, wird standardmäßig animecix verwendet.
Grundlegende Verwendung¶
Alle API-Befehle folgen diesem Muster:
Die Ausgabe ist immer gültiges JSON.
Befehle¶
providers¶
Alle verfügbaren Anbieter mit Metadaten auflisten.
Antwort:
[
{
"name": "animecix",
"lang": "tr",
"region": "TR",
"class": "AnimecixProvider"
},
{
"name": "hianime",
"lang": "en",
"region": "US",
"class": "HiAnimeProvider"
}
]
search¶
Anime über Anbieter suchen.
Antwort:
[
{
"id": "anime-slug",
"title": "Anime-Titel",
"type": "series",
"cover": "https://cover-url.jpg",
"year": 2024
}
]
episodes¶
Episodenliste für einen Anime abrufen.
Optional: Nach Staffel filtern
Antwort:
[
{
"id": "episode-id",
"number": 1,
"title": "Episodentitel",
"season": 1,
"url": "https://episode-url"
}
]
streams¶
Stream-URLs für eine Episode abrufen.
Antwort:
[
{
"url": "https://stream-url.m3u8",
"quality": "1080p",
"server": "megacloud",
"headers": {
"Referer": "https://..."
},
"subtitles": null
}
]
Fehlerbehandlung¶
Fehlerantwort¶
Fehler werden als JSON an stderr zurückgegeben:
Exit-Code ist bei Fehler ungleich null.
Fehler prüfen¶
if weeb-cli api search "anime" --provider ungültig 2>/dev/null; then
echo "Erfolg"
else
echo "Fehlgeschlagen"
fi
Integrationsbeispiele¶
Python-Skript¶
import subprocess
import json
def search_anime(query, provider="animecix"):
result = subprocess.run(
["weeb-cli", "api", "search", query, "--provider", provider],
capture_output=True,
text=True
)
if result.returncode == 0:
return json.loads(result.stdout)
else:
error = json.loads(result.stderr)
raise Exception(error["error"])
# Verwendung
results = search_anime("One Piece", "hianime")
for anime in results:
print(f"{anime['title']} ({anime['year']})")
Bash-Skript¶
#!/bin/bash
PROVIDER="animecix"
QUERY="Naruto"
# Suchen
results=$(weeb-cli api search "$QUERY" --provider "$PROVIDER")
# Mit jq parsen
echo "$results" | jq -r '.[] | "\(.title) - \(.year)"'
# Erste Ergebnis-ID holen
anime_id=$(echo "$results" | jq -r '.[0].id')
# Episoden abrufen
episodes=$(weeb-cli api episodes "$anime_id" --provider "$PROVIDER")
echo "$episodes" | jq -r '.[] | "Episode \(.number): \(.title)"'
Node.js-Skript¶
const { exec } = require('child_process');
const util = require('util');
const execPromise = util.promisify(exec);
async function searchAnime(query, provider = 'animecix') {
const cmd = `weeb-cli api search "${query}" --provider ${provider}`;
const { stdout } = await execPromise(cmd);
return JSON.parse(stdout);
}
// Verwendung
searchAnime('One Piece', 'hianime')
.then(results => {
results.forEach(anime => {
console.log(`${anime.title} (${anime.year})`);
});
})
.catch(console.error);
Erweiterte Verwendung¶
Ergebnisse weiterleiten¶
# Mit jq suchen und filtern
weeb-cli api search "anime" --provider animecix | \
jq '.[] | select(.year >= 2020)'
# Alle Episoden abrufen und zählen
weeb-cli api episodes "anime-id" --provider animecix | \
jq 'length'
# Besten Qualitäts-Stream abrufen
weeb-cli api streams "anime-id" "ep-id" --provider animecix | \
jq -r '.[0].url'
Befehle verketten¶
# Suchen, erstes Ergebnis holen, Episoden abrufen
ANIME_ID=$(weeb-cli api search "Naruto" --provider animecix | jq -r '.[0].id')
weeb-cli api episodes "$ANIME_ID" --provider animecix
Fehlerbehandlung¶
# Fehler erfassen
if ! output=$(weeb-cli api search "anime" --provider ungültig 2>&1); then
echo "Fehler aufgetreten: $output"
exit 1
fi
Leistung¶
Caching¶
API-Modus verwendet denselben Cache wie interaktiver Modus: - Suchergebnisse für 1 Stunde gecacht - Details für 6 Stunden gecacht - Streams nicht gecacht
Headless-Modus¶
API-Modus läuft im Headless-Modus: - Keine TUI-Abhängigkeiten geladen - Schnellerer Start - Geringere Speichernutzung
Einschränkungen¶
Keine interaktiven Funktionen¶
API-Modus unterstützt nicht: - Menüs und Eingabeaufforderungen - Fortschrittsbalken - Benutzereingabe - Farbausgabe
Keine Zustandsverwaltung¶
Jeder Befehl ist unabhängig: - Kein Sitzungsstatus - Keine Wiedergabeverlauf-Updates - Keine Fortschrittsverfolgung
Verwenden Sie den interaktiven Modus für diese Funktionen.
Best Practices¶
- Anbieter immer explizit angeben
- Fehler ordnungsgemäß behandeln
- JSON mit geeigneten Tools parsen (jq, Python json)
- Ergebnisse wenn möglich cachen
- Angemessene Timeouts verwenden
Nächste Schritte¶
- Befehls-Referenz: Alle CLI-Befehle
- Serve-Modus: Torznab-Server
- Entwicklung: API-Entwicklung