API Modu¶
Betikler, otomasyon ve diğer araçlarla entegrasyon için etkileşimsiz JSON API.
Genel Bakış¶
API modu tüm işlemler için JSON çıktısı sağlar, bu sayede kolayca: - Betiklerle entegre olun - İş akışlarını otomatikleştirin - Özel arayüzler oluşturun - Diğer araçlarla bağlantı kurun
Tüm API komutları sağlayıcı seçimini destekler --provider (veya -p) seçeneği ile. Bu, her işlem için hangi anime kaynağını kullanacağınızı seçmenize olanak tanır.
Sağlayıcı Seçimi¶
Mevcut Sağlayıcılar¶
Tüm mevcut sağlayıcıları görmek için providers komutunu kullanın:
Yanıt:
[
{
"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
}
]
Sağlayıcı Kategorileri¶
Türkçe Sağlayıcılar:
- animecix - Varsayılan Türkçe sağlayıcı
- turkanime - Alternatif Türkçe kaynak
- anizle - Türkçe anime akışı
- weeb - Türkçe anime kaynağı
İngilizce Sağlayıcılar:
- hianime - Yüksek kaliteli İngilizce anime
- allanime - Kapsamlı İngilizce kaynak
Almanca Sağlayıcılar:
- aniworld - Almanca anime akışı
Lehçe Sağlayıcılar:
- docchi - Lehçe anime kaynağı
Sağlayıcıları Kullanma¶
Tüm komutlar --provider veya -p seçeneğini kabul eder:
# Belirli bir sağlayıcı ile ara
weeb-cli api search "Naruto" --provider hianime
# Türkçe kaynaktan bölümleri al
weeb-cli api episodes "anime-id" --provider turkanime
# Almanca sağlayıcıdan indir
weeb-cli api download "anime-id" -s 1 -e 1 --provider aniworld
Varsayılan Sağlayıcı: --provider belirtilmezse, varsayılan olarak animecix kullanılır.
Temel Kullanım¶
Tüm API komutları bu kalıbı takip eder:
Çıktı her zaman geçerli JSON'dur.
Komutlar¶
providers¶
Tüm mevcut sağlayıcıları meta verilerle listeleyin.
Yanıt:
[
{
"name": "animecix",
"lang": "tr",
"region": "TR",
"class": "AnimecixProvider"
},
{
"name": "hianime",
"lang": "en",
"region": "US",
"class": "HiAnimeProvider"
}
]
search¶
Sağlayıcılar arasında anime arayın.
Yanıt:
[
{
"id": "anime-slug",
"title": "Anime Başlığı",
"type": "series",
"cover": "https://kapak-url.jpg",
"year": 2024
}
]
episodes¶
Bir anime için bölüm listesini alın.
İsteğe bağlı: Sezona göre filtrele
Yanıt:
[
{
"id": "episode-id",
"number": 1,
"title": "Bölüm Başlığı",
"season": 1,
"url": "https://bolum-url"
}
]
streams¶
Bir bölüm için yayın URL'lerini alın.
Yanıt:
[
{
"url": "https://yayin-url.m3u8",
"quality": "1080p",
"server": "megacloud",
"headers": {
"Referer": "https://..."
},
"subtitles": null
}
]
Hata İşleme¶
Hata Yanıtı¶
Hatalar stderr'e JSON olarak döndürülür:
Hata durumunda çıkış kodu sıfır değildir.
Hataları Kontrol Etme¶
if weeb-cli api search "anime" --provider geçersiz 2>/dev/null; then
echo "Başarılı"
else
echo "Başarısız"
fi
Entegrasyon Örnekleri¶
Python Betiği¶
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"])
# Kullanım
results = search_anime("One Piece", "hianime")
for anime in results:
print(f"{anime['title']} ({anime['year']})")
Bash Betiği¶
#!/bin/bash
PROVIDER="animecix"
QUERY="Naruto"
# Arama
results=$(weeb-cli api search "$QUERY" --provider "$PROVIDER")
# jq ile ayrıştır
echo "$results" | jq -r '.[] | "\(.title) - \(.year)"'
# İlk sonucun ID'sini al
anime_id=$(echo "$results" | jq -r '.[0].id')
# Bölümleri al
episodes=$(weeb-cli api episodes "$anime_id" --provider "$PROVIDER")
echo "$episodes" | jq -r '.[] | "Bölüm \(.number): \(.title)"'
Node.js Betiği¶
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);
}
// Kullanım
searchAnime('One Piece', 'hianime')
.then(results => {
results.forEach(anime => {
console.log(`${anime.title} (${anime.year})`);
});
})
.catch(console.error);
Gelişmiş Kullanım¶
Sonuçları Yönlendirme¶
# jq ile arama ve filtreleme
weeb-cli api search "anime" --provider animecix | \
jq '.[] | select(.year >= 2020)'
# Tüm bölümleri al ve say
weeb-cli api episodes "anime-id" --provider animecix | \
jq 'length'
# En iyi kaliteli yayını al
weeb-cli api streams "anime-id" "ep-id" --provider animecix | \
jq -r '.[0].url'
Komutları Zincirleme¶
# Ara, ilk sonucu al, bölümleri al
ANIME_ID=$(weeb-cli api search "Naruto" --provider animecix | jq -r '.[0].id')
weeb-cli api episodes "$ANIME_ID" --provider animecix
Hata İşleme¶
# Hataları yakala
if ! output=$(weeb-cli api search "anime" --provider geçersiz 2>&1); then
echo "Hata oluştu: $output"
exit 1
fi
Performans¶
Önbellekleme¶
API modu etkileşimli mod ile aynı önbelleği kullanır: - Arama sonuçları 1 saat önbelleğe alınır - Detaylar 6 saat önbelleğe alınır - Yayınlar önbelleğe alınmaz
Headless Modu¶
API modu headless modda çalışır: - TUI bağımlılıkları yüklenmez - Daha hızlı başlangıç - Daha düşük bellek kullanımı
Sınırlamalar¶
Etkileşimli Özellikler Yok¶
API modu şunları desteklemez: - Menüler ve istemler - İlerleme çubukları - Kullanıcı girişi - Renkli çıktı
Durum Yönetimi Yok¶
Her komut bağımsızdır: - Oturum durumu yok - İzleme geçmişi güncellemeleri yok - İlerleme takibi yok
Bu özellikler için etkileşimli modu kullanın.
En İyi Uygulamalar¶
- Sağlayıcıyı her zaman açıkça belirtin
- Hataları düzgün bir şekilde işleyin
- JSON'u uygun araçlarla ayrıştırın (jq, Python json)
- Mümkün olduğunda sonuçları önbelleğe alın
- Uygun zaman aşımları kullanın
Sonraki Adımlar¶
- Komutlar Referansı: Tüm CLI komutları
- Serve Modu: Torznab sunucusu
- Geliştirme: API geliştirme