CoolFace
Datasetpublic

mrdarkbr/wan22-code-backup

sourceHugging Faceupdated 28d agoView on Hugging Face
0likes55downloads
convert_faceswap_to_api.py65 linesDownload Raw Back to root
1import json2 3def convert_ui_to_api(ui_json):4    """5    Converte um workflow de UI do ComfyUI (com 'nodes' e 'links')6    para o formato de API do ComfyUI ({node_id: {inputs: {...}, class_type: ...}}).7    """8    nodes = ui_json.get("nodes", [])9    links = {l[0]: l for l in ui_json.get("links", [])}10    11    api_workflow = {}12    13    for node in nodes:14        nid = str(node["id"])15        ntype = node.get("type")16        if not ntype or ntype == "Note":17            continue18            19        inputs = {}20        21        # 1. Mapeia widgets_values22        wv = node.get("widgets_values")23        wv_named = node.get("widgets_values_named", {})24        25        if isinstance(wv_named, dict) and wv_named:26            for k, v in wv_named.items():27                inputs[k] = v28        elif isinstance(wv, dict):29            for k, v in wv.items():30                if k != "videopreview":31                    inputs[k] = v32        elif isinstance(wv, list):33            # Se for lista, precisamos dos nomes dos inputs de widget do nó34            pass35 36        # 2. Mapeia links de entrada (conectados a outros nós)37        for inp in node.get("inputs", []):38            inp_name = inp.get("name")39            link_id = inp.get("link")40            if link_id and link_id in links:41                l = links[link_id]42                from_node_id = str(l[1])43                from_slot = l[2]44                inputs[inp_name] = [from_node_id, from_slot]45 46        api_workflow[nid] = {47            "inputs": inputs,48            "class_type": ntype,49            "_meta": {50                "title": node.get("title", ntype)51            }52        }53        54    return api_workflow55 56if __name__ == "__main__":57    with open("faceswap.json", "r", encoding="utf-8") as f:58        ui_data = json.load(f)59        60    api_wf = convert_ui_to_api(ui_data)61    print(f"Total de nós convertidos: {len(api_wf)}")62    with open("faceswap_api.json", "w", encoding="utf-8") as f:63        json.dump(api_wf, f, indent=2, ensure_ascii=False)64    print("Salvo em faceswap_api.json com sucesso!")65