|
|
|
|
|
|
|
|
|
|
|
import requests
|
|
|
|
|
|
class VeureuEngineClient:
|
|
|
def __init__(self, base_url: str):
|
|
|
self.base = base_url.rstrip("/")
|
|
|
|
|
|
def process_video(self, video_path: str, **kwargs):
|
|
|
with open(video_path, "rb") as f:
|
|
|
files = {"video_file": (Path(video_path).name, f, "video/mp4")}
|
|
|
data = {"config_path": kwargs.get("config_path", "config_veureu.yaml"),
|
|
|
"out_root": kwargs.get("out_root", "results"),
|
|
|
"db_dir": kwargs.get("db_dir", "chroma_db")}
|
|
|
r = requests.post(f"{self.base}/process_video", files=files, data=data, timeout=3600)
|
|
|
r.raise_for_status()
|
|
|
return r.json()
|
|
|
|
|
|
def load_casting(self, faces_dir: str, voices_dir: str, db_dir: str = "chroma_db", drop_collections: bool = False):
|
|
|
data = {"faces_dir": faces_dir, "voices_dir": voices_dir, "db_dir": db_dir, "drop_collections": str(drop_collections)}
|
|
|
r = requests.post(f"{self.base}/load_casting", data=data, timeout=600)
|
|
|
r.raise_for_status(); return r.json()
|
|
|
|
|
|
def refine_narration(self, dialogues_srt: str, frame_descriptions: list, model_url: str, une_guidelines_path: str):
|
|
|
data = {
|
|
|
"dialogues_srt": dialogues_srt,
|
|
|
"frame_descriptions_json": json.dumps(frame_descriptions, ensure_ascii=False),
|
|
|
"model_url": model_url,
|
|
|
"une_guidelines_path": une_guidelines_path,
|
|
|
}
|
|
|
r = requests.post(f"{self.base}/refine_narration", data=data, timeout=600)
|
|
|
r.raise_for_status(); return r.json() |