# -*- coding: utf-8 -*-
r"""Мультяшные звуки для хулиганской версии (27.09): boing, kiss (twinkle на диске нет) из библиотеки -> audio\sfx\*.wav + громкость.
  python E:\PKSTUDIO\clients\pk_motion\tools\pm_sfx_extra.py
"""
import json, re, subprocess, sys
sys.stdout.reconfigure(encoding="utf-8")
FF = r"C:\Users\PKSTUDIO\.cache\hyperframes\ffmpeg\ffmpeg-9.0.1-essentials_build\bin\ffmpeg.exe"
D = r"E:\PKSTUDIO\clients\pk_motion\audio\sfx"
SRC = {
    "boing_A": (r"E:\PKSTUDIO\LIBRARY\game\4f359945_cartoon_boing_sound_effect_128k_.mp3", 0.9, "library:4f359945"),
    "kiss_A": (r"E:\PKSTUDIO\LIBRARY\game\07b58709_cartoon_kiss_-_sound_effect.m4a", 0.8, "library:07b58709"),
}
out = {}
for k, (src, dur, lib) in SRC.items():
    dst = D + "\\" + k + ".wav"
    af = f"silenceremove=start_periods=1:start_threshold=-45dB,atrim=0:{dur},afade=t=out:st={dur - 0.2:.2f}:d=0.2,aformat=sample_rates=48000:channel_layouts=stereo"
    subprocess.run([FF, "-v", "error", "-y", "-i", src, "-af", af, dst], check=True)
    r = subprocess.run([FF, "-hide_banner", "-i", dst, "-af", "volumedetect", "-f", "null", "-"], capture_output=True, text=True, encoding="utf-8", errors="ignore").stderr
    mean = float(re.search(r"mean_volume: (-?[\d.]+)", r).group(1)); peak = float(re.search(r"max_volume: (-?[\d.]+)", r).group(1))
    out[k] = {"file": k + ".wav", "source": lib, "dur": dur, "peak_db": peak, "lufs_or_mean_db": mean, "note": "мультяшный звук для кота и подмигивания"}
    print(k, mean, peak)
p = D + "\\sfx.json"
j = json.load(open(p, encoding="utf-8")); j.update(out)
json.dump(j, open(p, "w", encoding="utf-8"), ensure_ascii=False, indent=1)
print("sfx.json:", len(j))
