#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Bandingkan video baru (kiriman Bos) dengan semua video TS Law di server.

Tujuan: memastikan video kiriman ini belum pernah dipakai / tidak sama dengan yang sudah tayang.
"""
import glob
import os
import subprocess

import numpy as np
from PIL import Image

BARU = "_mega_dl/cek_20261009/1005(1).mp4"
N = 6


def ambil_frame(path, tag, n=N):
    dur = subprocess.run(
        ["ffprobe", "-v", "error", "-show_entries", "format=duration",
         "-of", "default=nw=1:nk=1", path],
        capture_output=True, text=True).stdout.strip()
    try:
        dur = float(dur)
    except ValueError:
        dur = 0.0
    out = []
    for i in range(n):
        t = dur * (i + 0.5) / n
        p = f"/tmp/_cmp_{tag}_{i}.jpg"
        subprocess.run(["ffmpeg", "-v", "error", "-ss", f"{t:.2f}", "-i", path,
                        "-frames:v", "1", "-vf", "scale=32:57", "-y", p], check=False)
        if os.path.exists(p):
            out.append(np.asarray(Image.open(p).convert("L"), dtype=float).ravel())
        else:
            out.append(None)
    return out


def main():
    baru = ambil_frame(BARU, "baru")
    punya = sum(1 for x in baru if x is not None)
    print(f"frame video baru: {punya}/{N}")
    hasil = []
    for f in sorted(glob.glob("openclaw-img/tslaw*.mp4")):
        if os.path.getsize(f) < 10000:
            continue
        k = ambil_frame(f, "k")
        pasangan = [(a, b) for a, b in zip(baru, k) if a is not None and b is not None]
        if len(pasangan) < N:
            continue
        beda = float(np.mean([np.mean(np.abs(a - b)) for a, b in pasangan]))
        hasil.append((beda, f))
    hasil.sort()
    print("=== beda rata-rata 6 frame (makin kecil = makin mirip) ===")
    for d, f in hasil[:10]:
        print(f"  {d:7.2f}  {f}")


if __name__ == "__main__":
    main()
