From ff52e2659709fb545989d65ad4a113e22a03a921 Mon Sep 17 00:00:00 2001 From: salt Date: Wed, 27 Mar 2024 01:46:13 -0700 Subject: [PATCH] update --- workflows/preview_server/miku1f.mp4 | Bin 0 -> 65261 bytes workflows/preview_server/preview_server.py | 158 +++++++++++++++++++-- workflows/preview_server/test_request.py | 17 +++ 3 files changed, 165 insertions(+), 10 deletions(-) create mode 100644 workflows/preview_server/miku1f.mp4 create mode 100644 workflows/preview_server/test_request.py diff --git a/workflows/preview_server/miku1f.mp4 b/workflows/preview_server/miku1f.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..5fca52aae8d89cf398fddc253a34d6e749cd54c6 GIT binary patch literal 65261 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 z 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 Path: - json_prompt = json.load(open(PROMPT_FILE)) +async def process_video(video_path: str, style_filename, positive_prompt=None, negative_prompt=None) -> Path: + # generate random seed (otherwise video will cache completely and not generate a new output) + styles_directory = Path(V2V_WORKFLOWS_DIRECTORY) / "styles" + workflow_directory = Path(V2V_WORKFLOWS_DIRECTORY) / "workflows" + mappings_directory = Path(V2V_WORKFLOWS_DIRECTORY) / "mappings" + + style_json = json.load(open(styles_directory / style_filename)) + workflow_json = json.load(open(workflow_directory / style_json["workflow_api_name"])) + mapping_json = json.load(open(mappings_directory / style_json["mapping_name"])) + + json_mods = style_json["modifications"] + jsonpath_mods = get_jsonpath_mods(json_mods, mapping_json, pos_in=positive_prompt, neg_in=negative_prompt) + print(*jsonpath_mods.items(), sep="\n") + + json_prompt = apply_jsonpath_mods(jsonpath_mods, workflow_json) # generate random seed (otherwise video will cache completely and not generate a new output) - json_prompt["173"]["inputs"]["seed"] = random.randint(0, 1000000) + try: + json_prompt["173"]["inputs"]["seed"] = random.randint(0, 1000000) + except KeyError: + pass input_video_path = Path(COMFY_ROOT_DIRECTORY) / "input/input.mp4" preview_image_path = Path(COMFY_ROOT_DIRECTORY) / "output/vid2vid/SparseImagePreview_00001_.png" @@ -116,8 +183,79 @@ async def process_video(video_path: str) -> Path: return preview_image_path +def get_jsonpath_mods(style_mods: Dict[str, Any], mapping_json: Dict[str, Any], pos_in: Optional[str] = None, + neg_in: Optional[str] = None) -> Dict[str, Any]: + modifications = {} + new_mod_json = style_mods.copy() + # Process "loras" differently + loras = new_mod_json.get("loras", []) + if len(loras) > 8: + raise ValueError("Too many loras, max is 8") + + for index, lora in enumerate(loras): + if "name" in lora and "strength" in lora: + new_mod_json[f"lora_{index + 1}_strength"] = lora["strength"] + new_mod_json[f"lora_{index + 1}_name"] = lora["name"] + + # Exclude "loras" from further processing + new_mod_json.pop("loras", None) + + # Handling positive and negative prompts + if pos_in: + new_mod_json["positive_prompt"] = f"{new_mod_json.get('positive_prompt', '')}, {pos_in}" + if neg_in: + new_mod_json["negative_prompt"] = f"{new_mod_json.get('negative_prompt', '')}, {neg_in}" + + for key, value in new_mod_json.items(): + mapping_key = f"$.{key}" + jsonpath_expr = parse(mapping_key) + + # Finding matches using jsonpath_ng + matches = [match.value for match in jsonpath_expr.find(mapping_json)] + if matches: + mapping_value = matches[0] + modifications[mapping_value] = value + else: + print(f"No mapping found for key '{key}'") + + return modifications + + +def apply_jsonpath_mods(jsonpath_mods: Dict[str, Any], workflow_json: Dict[str, Any]) -> Dict[str, Any]: + for key, value in jsonpath_mods.items(): + # jsonpath-ng expects numbers to be wrapped in quotes + parts = key.split(".") + new_parts = [f"'{part}'" if part.isdigit() else part for part in parts] + key = ".".join(new_parts) + + jsonpath_expr = parse(key) + matches = jsonpath_expr.find(workflow_json) + + if matches: + parent = matches[0].context.value + + if isinstance(parent, dict): + last_part = new_parts[-1].strip("'") + parent[last_part] = value + + elif isinstance(parent, list): + index = int(new_parts[-1].strip("'")) + if 0 <= index < len(parent): + parent[index] = value + else: + print(f"Index {index} is out of bounds for key '{key}'") + else: + print(f"No mapping found for key '{key}'") + + return workflow_json + + if __name__ == "__main__": import uvicorn + import asyncio + + # install ComfyUI + os.system("python3 install.py") signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) diff --git a/workflows/preview_server/test_request.py b/workflows/preview_server/test_request.py new file mode 100644 index 0000000..4bc222d --- /dev/null +++ b/workflows/preview_server/test_request.py @@ -0,0 +1,17 @@ +import json + +import requests + +url = 'http://localhost:8000/preview/' +payload = {"style": "comic_book", "positive_prompt": "test pos in", "negative_prompt": "test neg in"} +files = {'video': open('miku1f.mp4', 'rb')} + +response = requests.post(url, data={'request': json.dumps(payload)}, files=files) # Use 'request': payload directly +if response.status_code == 200: + # Success + with open('preview_image.jpeg', 'wb') as f: + f.write(response.content) +else: + # Handle request error + print(f"Request failed: {response.status_code}") + print(response.text)