Mock fallback mantığını ve determinantik mock üretim kodlarını kaldırarak TurkceAltyazi sağlayıcısını tamamen gerçek moda geçirdi. İyileştirilmiş arama, indirme ve çerez yönetimi ile sağlam bir entegrasyon sağlandı. - MockArtifact ve deterministic modüllerini kaldır - TurkceAltyaziProvider'da mock fallback mantığını tamamen kaldır - HTTP çerez yönetimi, retry mantığı ve hata işleme iyileştirmeleri - ENABLE_TA_STEP_LOGS yapılandırması ile adım adım loglama - TURKCEALTYAZI_ALLOW_MOCK_FALLBACK ortam değişkenini kaldır - Dokümantasyonu gerçek mod reflektif olarak güncelle - OpenSubtitles sağlayıcını gerçek entegrasyon tamamlanana kadar pasif yap - Varsayılan kaynak etiketini 'mock' yerine 'unknown' olarak güncelle
3.4 KiB
3.4 KiB
subwatcher
Docker tabanli altyazi otomasyon sistemi.
core: watcher + ffprobe + BullMQ + Mongo job/log API + review akisiapi: gercek provider subtitle engine + archive extraction + security + scoringui: React/Vite panel (dashboard, jobs, detail live logs, review, settings, watched paths)
Mimari
- Mongo koleksiyonlari:
watched_paths,settings,media_files,jobs,job_logs - Redis/BullMQ kuyruklari:
fileEventsmediaAnalysissubtitleFetchfinalizeWrite
- Core -> API servis cagrisi (docker network):
http://api:3002 - UI -> Core API:
http://localhost:3001/api(CORS acik) - Temp alan:
/temp/{jobToken}
TurkceAltyazi Gercek Modu (v2)
Gercek entegrasyon feature flag ile acilabilir:
ENABLE_TURKCEALTYAZI_REAL=true
TURKCEALTYAZI_BASE_URL=https://turkcealtyazi.org
TURKCEALTYAZI_TIMEOUT_MS=12000
TURKCEALTYAZI_MIN_DELAY_MS=300
ENABLE_TURKCEALTYAZI_REAL=true:TurkceAltyaziProvidergercek HTTP+HTML parse dener.
Gelistirme (Dev)
- Ortam dosyasi:
cp .env.example .env
- Servisleri kaldir:
docker compose -f compose.dev.yml up --build
- Portlar:
- UI:
http://localhost:5173 - Core:
http://localhost:3001 - API:
http://localhost:3002 - Mongo:
localhost:27017 - Redis:
localhost:6379
- Media dosyasi yerlestirme:
- TV:
./_media/tv - Movie:
./_media/movie
Gercek .mkv dosyasi ekleyince watcher pipeline'i tetikler.
- Debug enqueue (dev-only):
curl -X POST http://localhost:3001/api/debug/enqueue \
-H 'content-type: application/json' \
-d '{"path":"/media/movie/example.mkv","kind":"movie"}'
Production
docker compose -f compose.yml up --build -d
Portlar:
- UI:
http://localhost:3000 - Core:
http://localhost:3001 - API:
http://localhost:3002
UI Ozellikleri
- Dashboard: son 24h ozet + son isler
- Jobs: filtreleme + job detayi
- Job Detail: metadata, mediaInfo, sonuc dosyalari, canli SSE log paneli
- Review List:
NEEDS_REVIEWisler - Manual override: metadata ile ara + candidate sec + finalize write
- Settings: language/overwrite/stability/security ayarlari
- Watched Paths: ekle/sil/enable/disable
API Endpointleri
Core
GET /api/healthGET /api/settingsPOST /api/settingsGET /api/watched-pathsPOST /api/watched-pathsGET /api/jobsGET /api/jobs/:idGET /api/jobs/:id/logsGET /api/jobs/:id/stream(SSE)GET /api/reviewPOST /api/review/:jobId/searchPOST /api/review/:jobId/choosePOST /api/debug/enqueue(dev)
Subtitle API
GET /v1/healthPOST /v1/subtitles/searchPOST /v1/subtitles/choosePOST /v1/subtitles/cleanup
Guvenlik ve Dogrulama
- Archive extraction:
7z - Zip slip kontrolu: realpath root disina cikis reddi
- Limit kontrolleri:
- max file count
- max total size
- max single file size
- SRT/ASS extension'a gore degil, icerige gore validate edilir
- Gecersiz altyazilar aninda silinir (
INVALID_SUBTITLE_DELETED)
Encoding
Core finalize adiminda:
- BOM kontrol
- UTF-8 / windows-1254 / latin1 fallback
- LF newline normalizasyonu
- hedef adlandirma:
{base}.{lang}.{ext} - overwrite false ise
.2,.3...
Testler
Core:
cd services/core && npm test
API:
cd services/api && npm test
Kapsam:
- filename parser
- SRT/ASS validator
- scoring + ambiguous karari
- zip slip helper
Gelecek (v2)
- Gercek OpenSubtitles API entegrasyonu
- ClamAV tarama (feature flag hazir)