RESTful API Modu¶
Weeb CLI, arama, bölüm listeleme, stream çıkarma ve anime detayları dahil tüm provider işlemleri için HTTP endpoint'leri sağlayan bir RESTful API sunucusu olarak çalıştırılabilir.
Kurulum¶
RESTful API bağımlılıklarıyla birlikte kurun:
Kullanım¶
Temel Kullanım¶
Sunucuyu varsayılan ayarlarla başlatın:
Sunucu http://0.0.0.0:8080 adresinde başlayacak ve tüm mevcut provider'ları otomatik olarak yükleyecektir.
Özel Yapılandırma¶
Tüm mevcut provider'lar otomatik olarak yüklenir. API isteklerinde provider sorgu parametresi ile hangi provider'ı kullanacağınızı seçin.
Komut Seçenekleri¶
| Seçenek | Ortam Değişkeni | Varsayılan | Açıklama |
|---|---|---|---|
--port |
RESTFUL_PORT |
8080 |
Bağlanılacak HTTP portu |
--host |
RESTFUL_HOST |
0.0.0.0 |
Bağlanılacak host adresi |
--cors/--no-cors |
RESTFUL_CORS |
true |
CORS'u etkinleştir/devre dışı bırak |
--debug |
RESTFUL_DEBUG |
false |
Debug modunu etkinleştir |
Not: Tüm mevcut provider'lar otomatik olarak yüklenir. API isteklerinde provider sorgu parametresi ile hangi provider'ı kullanacağınızı seçin.
API Endpoint'leri¶
Sağlık Kontrolü¶
Sunucunun çalışıp çalışmadığını kontrol edin:
Yanıt:
{
"status": "ok",
"service": "weeb-cli-restful",
"providers": ["animecix", "hianime", "aniworld", "docchi"]
}
Provider'ları Listele¶
Tüm mevcut provider'ları alın:
Yanıt:
{
"success": true,
"providers": [
{
"name": "animecix",
"lang": "tr",
"region": "TR",
"class": "AnimecixProvider"
}
],
"loaded": ["animecix", "hianime"]
}
Anime Ara¶
Provider'lar arasında anime arayın:
Sorgu Parametreleri:
- q (zorunlu): Arama sorgusu
- provider (opsiyonel): Provider adı (varsayılan olarak ilk yüklenen)
Yanıt:
{
"success": true,
"provider": "animecix",
"query": "naruto",
"count": 10,
"results": [
{
"id": "12345",
"title": "Naruto",
"type": "series",
"cover": "https://example.com/cover.jpg",
"year": 2002
}
]
}
Anime Detaylarını Al¶
Bir anime hakkında detaylı bilgi alın:
Sorgu Parametreleri:
- provider (opsiyonel): Provider adı (varsayılan olarak ilk yüklenen)
Yanıt:
{
"success": true,
"provider": "animecix",
"anime": {
"id": "12345",
"title": "Naruto",
"type": "series",
"cover": "https://example.com/cover.jpg",
"year": 2002,
"description": "Anime açıklaması...",
"genres": ["Aksiyon", "Macera"],
"status": "completed",
"episodes": [...]
}
}
Bölümleri Al¶
Bir anime için tüm bölümleri listeleyin:
Sorgu Parametreleri:
- provider (opsiyonel): Provider adı (varsayılan olarak ilk yüklenen)
- season (opsiyonel): Sezon numarasına göre filtrele
Yanıt:
{
"success": true,
"provider": "animecix",
"anime_id": "12345",
"count": 220,
"episodes": [
{
"id": "ep-1",
"number": 1,
"title": "Giriş: Naruto Uzumaki!",
"season": 1,
"url": "https://example.com/episode/1"
}
]
}
Stream'leri Al¶
Bir bölüm için stream URL'lerini alın:
Sorgu Parametreleri:
- provider (opsiyonel): Provider adı (varsayılan olarak ilk yüklenen)
- sort (opsiyonel): Kaliteye göre sırala (asc veya desc, varsayılan desc)
Yanıt:
{
"success": true,
"provider": "animecix",
"anime_id": "12345",
"episode_id": "ep-1",
"count": 3,
"streams": [
{
"url": "https://example.com/stream.m3u8",
"quality": "1080p",
"server": "default",
"headers": {
"Referer": "https://example.com"
},
"subtitles": null
}
]
}
Docker Dağıtımı¶
Docker Compose Kullanarak¶
Dockerfile Kullanarak¶
Image'ı oluşturun:
Container'ı çalıştırın:
Ortam Değişkenleri¶
Sunucuyu ortam değişkenleri ile yapılandırın:
docker run -d \
--name weeb-cli-restful \
-p 9000:9000 \
-e RESTFUL_PORT=9000 \
-e RESTFUL_HOST=0.0.0.0 \
-e RESTFUL_CORS=true \
-e RESTFUL_DEBUG=false \
weeb-cli-restful
Hata Yönetimi¶
Tüm endpoint'ler tutarlı hata yanıtları döndürür:
Yaygın HTTP Durum Kodları:
- 200: Başarılı
- 400: Hatalı istek (eksik/geçersiz parametreler)
- 404: Kaynak bulunamadı
- 500: Sunucu hatası
CORS Desteği¶
CORS varsayılan olarak etkindir ve herhangi bir origin'den gelen isteklere izin verir. Devre dışı bırakmak için:
Veya ortam değişkeni ile:
Örnek Kullanım¶
cURL¶
# Anime ara
curl "http://localhost:8080/api/search?q=naruto&provider=animecix"
# Bölümleri al
curl "http://localhost:8080/api/anime/12345/episodes?season=1"
# Stream'leri al
curl "http://localhost:8080/api/anime/12345/episodes/ep-1/streams?sort=desc"
Python¶
import requests
# Anime ara
response = requests.get(
"http://localhost:8080/api/search",
params={"q": "naruto", "provider": "animecix"}
)
results = response.json()
# Stream'leri al
response = requests.get(
f"http://localhost:8080/api/anime/{anime_id}/episodes/{episode_id}/streams",
params={"provider": "animecix", "sort": "desc"}
)
streams = response.json()
JavaScript¶
// Anime ara
const response = await fetch(
'http://localhost:8080/api/search?q=naruto&provider=animecix'
);
const data = await response.json();
// Stream'leri al
const streamResponse = await fetch(
`http://localhost:8080/api/anime/${animeId}/episodes/${episodeId}/streams?sort=desc`
);
const streams = await streamResponse.json();
Üretim Dağıtımı¶
Reverse Proxy (Nginx)¶
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Systemd Servisi¶
/etc/systemd/system/weeb-cli-restful.service oluşturun:
[Unit]
Description=Weeb CLI RESTful API
After=network.target
[Service]
Type=simple
User=weeb
WorkingDirectory=/opt/weeb-cli
Environment="RESTFUL_PORT=8080"
ExecStart=/usr/local/bin/weeb-cli serve restful
Restart=always
[Install]
WantedBy=multi-user.target
Etkinleştir ve başlat:
Güvenlik Hususları¶
-
Kimlik Doğrulama: API yerleşik kimlik doğrulama içermez. Herkese açık olarak sunuluyorsa, kimlik doğrulama ile bir reverse proxy (Nginx, Traefik) kullanın.
-
Hız Sınırlama: Kötüye kullanımı önlemek için reverse proxy seviyesinde hız sınırlama uygulayın.
-
HTTPS: Üretimde her zaman HTTPS kullanın. SSL/TLS'yi reverse proxy seviyesinde yapılandırın.
-
Güvenlik Duvarı: Mümkünse erişimi güvenilir IP'lerle sınırlayın.
Sorun Giderme¶
Port Zaten Kullanımda¶
# Portu kullanan uygulamayı kontrol et
lsof -i :8080
# Farklı bir port kullan
weeb-cli serve restful --port 9000
Provider Bulunamadı¶
Provider adının doğru ve mevcut olduğundan emin olun:
# Mevcut provider'ları listele
weeb-cli api providers
# API isteğinde doğru provider adını kullan
curl "http://localhost:8080/api/search?q=naruto&provider=animecix"
CORS Sorunları¶
CORS sorunları yaşıyorsanız, CORS'un etkin olduğundan emin olun: