"""FikoYT Video Süresi — saniye cinsinden süre → LTX kare sayısı + eşleşen ses süresi.

Frame uğraşı yok: tek 'saniye' değeri hem video uzunluğunu (EmptyLTXVLatentVideo.length)
hem de mp3 segment süresini (TrimAudioDuration.duration) sürer → ikisi otomatik senkron.
LTX latent kısıtı (length = 8k+1) otomatik uygulanır. fps sabit 24 (sinematik optimal).
"""

_FPS = 24


class FikoYTVideoSuresi:
    @classmethod
    def INPUT_TYPES(cls):
        return {
            "required": {
                "saniye": ("FLOAT", {
                    "default": 6.0, "min": 0.3, "max": 60.0, "step": 0.1,
                    "tooltip": "Video uzunluğu (saniye). MP3 segment süresi buna otomatik eşitlenir.",
                }),
            }
        }

    RETURN_TYPES = ("INT", "FLOAT", "INT")
    RETURN_NAMES = ("frames", "sure_saniye", "fps")
    FUNCTION = "hesapla"
    CATEGORY = "FikoYT/video"

    def hesapla(self, saniye):
        raw = max(1, round(saniye * _FPS))
        k = max(1, round((raw - 1) / 8))      # LTX: length = 8k + 1
        frames = k * 8 + 1
        return (frames, frames / float(_FPS), _FPS)


NODE_CLASS_MAPPINGS = {"FikoYTVideoSuresi": FikoYTVideoSuresi}
NODE_DISPLAY_NAME_MAPPINGS = {"FikoYTVideoSuresi": "FikoYT ⏱ Video Süresi (saniye→kare)"}
