@echo off
chcp 65001 >nul
title Muzik Video Uretici - LTX Desktop API
setlocal enabledelayedexpansion

REM ── CUDA OOM FIX: Bellek parcalanmasini onle ──
set PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True

set PYTHON="D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim\LTX-Desktop-WanGP\LTX-Desktop-WanGP\backend\.venv\Scripts\python.exe"
set SCRIPT="D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim\muzik_video_uret.py"

set IMAGE=
set AUDIO=
set FACEIMG=

echo ============================================
echo   MUZIK VIDEO URETICI - LTX Desktop API
echo   (LTX 2.3 Fast Model - Hizli Uretim)
echo ============================================
echo.

REM Surukle birak ile gelen dosyalari ayikla
for %%A in (%*) do (
    set "FILE=%%~A"
    set "EXT=%%~xA"
    
    if /i "!EXT!"==".png" set "IMAGE=%%~A"
    if /i "!EXT!"==".jpg" set "IMAGE=%%~A"
    if /i "!EXT!"==".jpeg" set "IMAGE=%%~A"
    if /i "!EXT!"==".webp" set "IMAGE=%%~A"
    if /i "!EXT!"==".bmp" set "IMAGE=%%~A"
    
    if /i "!EXT!"==".mp3" set "AUDIO=%%~A"
    if /i "!EXT!"==".wav" set "AUDIO=%%~A"
    if /i "!EXT!"==".flac" set "AUDIO=%%~A"
    if /i "!EXT!"==".m4a" set "AUDIO=%%~A"
)

REM Eger surukle birak ile gelmemisse sor
if "%IMAGE%"=="" (
    echo   [!] Resim dosyasi bulunamadi.
    echo       Resim ve sarki dosyalarini bu bat'in
    echo       ustune surukleyip birakin.
    echo.
    echo   VEYA asagiya elle yazin:
    echo.
    set /p IMAGE="  Resim yolu (png/jpg): "
)

if "%AUDIO%"=="" (
    echo.
    echo   [!] Sarki dosyasi bulunamadi.
    set /p AUDIO="  Sarki yolu (mp3/wav): "
)

if "%IMAGE%"=="" (
    echo HATA: Resim dosyasi gerekli!
    pause
    exit /b 1
)
if "%AUDIO%"=="" (
    echo HATA: Sarki dosyasi gerekli!
    pause
    exit /b 1
)

echo.
echo   Resim : %IMAGE%
echo   Sarki : %AUDIO%
echo.
set /p PROMPT="  Video aciklamasi (Enter=varsayilan): "
if "%PROMPT%"=="" set PROMPT=cinematic slow motion, beautiful scenery, atmospheric lighting, high quality 4k

echo.
echo   Cozunurluk secin:
echo     1) 540p (Varsayilan - Dengeli)
echo     2) 720p (Yuksek kalite)
echo     3) 512p (Dusuk - En hizli)
echo.
set /p RESCHOICE="  Seciminiz (1/2/3, Enter=1): "
if "%RESCHOICE%"=="" set RESCHOICE=1
if "%RESCHOICE%"=="1" set RESOLUTION=540p
if "%RESCHOICE%"=="2" set RESOLUTION=720p
if "%RESCHOICE%"=="3" set RESOLUTION=512p
if not defined RESOLUTION set RESOLUTION=540p

echo.
echo   En-boy orani:
echo     1) 16:9 Yatay (Varsayilan - YouTube)
echo     2) 9:16 Dikey (Shorts/Reels)
echo.
set /p ASPECTCHOICE="  Seciminiz (1/2, Enter=1): "
if "%ASPECTCHOICE%"=="" set ASPECTCHOICE=1
if "%ASPECTCHOICE%"=="1" set ASPECT=16:9
if "%ASPECTCHOICE%"=="2" set ASPECT=9:16
if not defined ASPECT set ASPECT=16:9

echo.
echo   Segment suresi (her parca kac saniye olsun):
echo     1) 20s  - Uzun parcalar, az gecis (Varsayilan)
echo     2) 10s  - Orta parcalar, dengeli
echo     3) 8s   - Kisa parcalar
echo     4) 6s   - Cok kisa, daha tutarli yuz
echo     5) 5s   - En kisa, en az halusinasyon
echo.
echo     NOT: Cozunurlugun desteklemedigi sureler otomatik dusurulur
echo          (720p max 10s, 1080p max 5s)
echo.
set /p SEGCHOICE="  Seciminiz (1-5, Enter=1): "
if "%SEGCHOICE%"=="" set SEGCHOICE=1
if "%SEGCHOICE%"=="1" set SEGDUR=20
if "%SEGCHOICE%"=="2" set SEGDUR=10
if "%SEGCHOICE%"=="3" set SEGDUR=8
if "%SEGCHOICE%"=="4" set SEGDUR=6
if "%SEGCHOICE%"=="5" set SEGDUR=5
if not defined SEGDUR set SEGDUR=20

echo.
echo   Guidance Scale (Prompt'a bağlılık):
echo     1) 3.5  - Serbest / Doğal (Varsayılan - Şarkıcı için iyi)
echo     2) 4.5  - Dengeli
echo     3) 6.0  - Prompt'a yakın
echo     4) Elle gir
echo.
set /p GUIDECHOICE="  Seciminiz (1-4, Enter=1): "
if "%GUIDECHOICE%"=="" set GUIDECHOICE=1
if "%GUIDECHOICE%"=="1" set GUIDANCE=3.5
if "%GUIDECHOICE%"=="2" set GUIDANCE=4.5
if "%GUIDECHOICE%"=="3" set GUIDANCE=6.0
if "%GUIDECHOICE%"=="4" (
    set /p GUIDANCE="  Guidance Scale deger gir (ornek: 3.5): "
)
if not defined GUIDANCE set GUIDANCE=3.5

echo.
echo   Steps (Kalite / Hız dengesi):
echo     1) 20  - Hizli, test icin
echo     2) 30  - Dengeli (Varsayilan)
echo     3) 40  - Yuksek kalite (yavash)
echo     4) Elle gir
echo.
set /p STEPSCHOICE="  Seciminiz (1-4, Enter=2): "
if "%STEPSCHOICE%"=="" set STEPSCHOICE=2
if "%STEPSCHOICE%"=="1" set STEPS=20
if "%STEPSCHOICE%"=="2" set STEPS=30
if "%STEPSCHOICE%"=="3" set STEPS=40
if "%STEPSCHOICE%"=="4" (
    set /p STEPS="  Steps degeri gir (ornek: 35): "
)
if not defined STEPS set STEPS=30

echo.
echo   InfiniteTalk (Segmentsiz tek seferde uzun video):
echo     1) Kapali (Varsayilan - LTX Desktop segment-bazli)
echo     2) Acik  (WanGP InfiniteTalk sliding window - gecis sorunsuz)
echo.
echo     NOT: InfiniteTalk 480p uretir, WanGP kurulumu gerektirir.
echo          Acik olunca segment/cozunurluk ayarlari yok sayilir.
echo.
set /p ITCHOICE="  Seciminiz (1/2, Enter=1): "
if "%ITCHOICE%"=="" set ITCHOICE=1
set INFINITETALK_ARG=
if "%ITCHOICE%"=="2" set INFINITETALK_ARG=--infinitetalk

echo.
echo   Auto-Prompt (Ses enerjisine gore otomatik prompt):
echo     1) Kapali (Varsayilan - Ayni prompt her segmentte)
echo     2) Acik  (Sessiz/dusuk/yuksek bolumler farkli prompt alir)
echo.
set /p APCHOICE="  Seciminiz (1/2, Enter=1): "
if "%APCHOICE%"=="" set APCHOICE=1
set AUTO_PROMPT_ARG=
if "%APCHOICE%"=="2" set AUTO_PROMPT_ARG=--auto-prompt

echo.
echo   Face Swap (Son karelerde yuz degistirme):
echo     1) Kapali (Varsayilan)
echo     2) Acik - Resim secin
echo.
set /p FSWCHOICE="  Seciminiz (1/2, Enter=1): "
if "%FSWCHOICE%"=="" set FSWCHOICE=1
set FACE_SWAP_ARG=
if "%FSWCHOICE%"=="2" (
    echo.
    echo   Face swap icin kaynak yuz resmini girin:
    set /p FACEIMG="  Yuz resmi yolu (png/jpg): "
    if not "!FACEIMG!"=="" set "FACE_SWAP_ARG=--face-swap "!FACEIMG!""
)

echo.
echo ============================================
echo   Ayarlar:
echo     Prompt: %PROMPT%
echo     Cozunurluk: %RESOLUTION%
echo     Oran: %ASPECT%
echo     Segment: %SEGDUR%s
echo     Model: fast (LTX 2.3 Fast)
echo     Guidance Scale: %GUIDANCE%
echo     Steps: %STEPS%
if not "%INFINITETALK_ARG%"=="" echo     InfiniteTalk: ACIK (WanGP)
if not "%AUTO_PROMPT_ARG%"=="" echo     Auto-Prompt: ACIK
if not "%FACEIMG%"=="" echo     Face Swap: %FACEIMG%
echo ============================================
echo.
echo   NOT: LTX Desktop'un acik olmasi gerekir!
echo.
echo   Baslatiliyor...
echo.

if not "%FACEIMG%"=="" (
    %PYTHON% %SCRIPT% "%AUDIO%" "%IMAGE%" --prompt "%PROMPT%" --resolution %RESOLUTION% --aspect %ASPECT% --segment-duration %SEGDUR% --guidance-scale %GUIDANCE% --steps %STEPS% %AUTO_PROMPT_ARG% %INFINITETALK_ARG% --face-swap "%FACEIMG%"
) else (
    %PYTHON% %SCRIPT% "%AUDIO%" "%IMAGE%" --prompt "%PROMPT%" --resolution %RESOLUTION% --aspect %ASPECT% --segment-duration %SEGDUR% --guidance-scale %GUIDANCE% --steps %STEPS% %AUTO_PROMPT_ARG% %INFINITETALK_ARG%
)

echo.
echo ============================================
echo   Islem tamamlandi!
echo ============================================
echo.
pause
