From c512cc67d905e4f3cb4ce5b157756b8f87eda5ea Mon Sep 17 00:00:00 2001 From: "DESKTOP-TVBJISQ\\Primere" Date: Mon, 20 Apr 2026 10:29:02 +0200 Subject: [PATCH] V2.0.0 - Seedance api --- Nodes/Uniapi.py | 6 + Workflow/Development/universal_api.json | 2425 ++++++++++++---------- components/API/responses/FAL_Seedance.py | 23 + front_end/api_schemas.example.json | 172 -- front_end/title_manager.js | 2 +- terminal_helpers/result.json | 78 +- terminal_helpers/snippet.py | 26 +- 7 files changed, 1444 insertions(+), 1288 deletions(-) create mode 100644 components/API/responses/FAL_Seedance.py diff --git a/Nodes/Uniapi.py b/Nodes/Uniapi.py index 09d7369..a772c50 100644 --- a/Nodes/Uniapi.py +++ b/Nodes/Uniapi.py @@ -38,6 +38,12 @@ class PrimereApiProcessor: API_SCHEMAS_RAW = utility.json2tuple(_schema_file if Path(_schema_file).is_file() else _schema_example) API_SCHEMA_REGISTRY = api_schema_registry.normalize_registry(API_SCHEMAS_RAW) + SECTION_TITLES = [ + {"before": "processor", "name": "primere_api_proc", "title": "🧭 API Setup", "color": "#1B263B", "text_color": "#EAF1F8", "label": "Setup API processor, select related provider and service."}, + {"before": "auto_save_result", "name": "primere_save_api_result", "title": "💾 API result save", "color": "#1B263B", "text_color": "#EAF1F8", "label": "Save API results. Define main path, add subdirectory structure, add filename prefixes. Save related data to .txt or .json file."}, + {"after": "save_data_to_txt", "name": "primere_api_body", "title": "⚙ API body parameters", "color": "#1B263B", "text_color": "#EAF1F8", "label": "Set API body custom parameters."}, + ] + @classmethod def INPUT_TYPES(cls): cls.required_inputs = { diff --git a/Workflow/Development/universal_api.json b/Workflow/Development/universal_api.json index 9f72301..71f27ed 100644 --- a/Workflow/Development/universal_api.json +++ b/Workflow/Development/universal_api.json @@ -1,15 +1,15 @@ { "id": "3ed198dc-bee5-40d4-a269-63c758e8edff", "revision": 0, - "last_node_id": 77, - "last_link_id": 691, + "last_node_id": 84, + "last_link_id": 722, "nodes": [ { - "id": 22, + "id": 30, "type": "LoadImage", "pos": [ - -1034.1039162302618, - -536.5149387988644 + -2309.529507958986, + -9.281977659606936 ], "size": [ 412.12756911804206, @@ -19,47 +19,6 @@ "order": 0, "mode": 0, "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 681 - ] - }, - { - "name": "MASK", - "type": "MASK", - "links": null - } - ], - "properties": { - "Node name for S&R": "LoadImage", - "cnr_id": "comfy-core", - "ver": "0.14.1" - }, - "widgets_values": [ - "2025-03-18_16-10-01.jpg", - "image" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 30, - "type": "LoadImage", - "pos": [ - -1520, - 20 - ], - "size": [ - 412.12756911804206, - 508.84732322692867 - ], - "flags": {}, - "order": 1, - "mode": 0, - "inputs": [], "outputs": [ { "name": "IMAGE", @@ -86,371 +45,19 @@ "color": "#432", "bgcolor": "#653" }, - { - "id": 36, - "type": "LoadImage", - "pos": [ - -1060, - 30 - ], - "size": [ - 412.12756911804206, - 508.84732322692867 - ], - "flags": {}, - "order": 2, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 688 - ] - }, - { - "name": "MASK", - "type": "MASK", - "links": null - } - ], - "properties": { - "Node name for S&R": "LoadImage", - "cnr_id": "comfy-core", - "ver": "0.14.1" - }, - "widgets_values": [ - "IMG_1074.jpg", - "image" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 28, - "type": "LoadImage", - "pos": [ - -2400, - 10 - ], - "size": [ - 412.12756911804206, - 508.84732322692867 - ], - "flags": {}, - "order": 3, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 683 - ] - }, - { - "name": "MASK", - "type": "MASK", - "links": null - } - ], - "properties": { - "Node name for S&R": "LoadImage", - "cnr_id": "comfy-core", - "ver": "0.14.1" - }, - "widgets_values": [ - "4FJRSS25ACABU531-94S-P-META.jpg", - "image" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 37, - "type": "LoadImage", - "pos": [ - -2410, - 570 - ], - "size": [ - 412.12756911804206, - 508.84732322692867 - ], - "flags": {}, - "order": 4, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 684 - ] - }, - { - "name": "MASK", - "type": "MASK", - "links": null - } - ], - "properties": { - "Node name for S&R": "LoadImage", - "cnr_id": "comfy-core", - "ver": "0.14.1" - }, - "widgets_values": [ - "2025-03-21_09-26-43.jpg", - "image" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 40, - "type": "LoadImage", - "pos": [ - -1510, - 590 - ], - "size": [ - 412.12756911804206, - 508.84732322692867 - ], - "flags": {}, - "order": 5, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 685 - ] - }, - { - "name": "MASK", - "type": "MASK", - "links": null - } - ], - "properties": { - "Node name for S&R": "LoadImage", - "cnr_id": "comfy-core", - "ver": "0.14.1" - }, - "widgets_values": [ - "2025-03-22_15-24-00.jpg", - "image" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 18, - "type": "LoadImage", - "pos": [ - -1463.6929609110477, - -541.514916458471 - ], - "size": [ - 412.12756911804206, - 508.84732322692867 - ], - "flags": {}, - "order": 6, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 689 - ] - }, - { - "name": "MASK", - "type": "MASK", - "links": null - } - ], - "properties": { - "Node name for S&R": "LoadImage", - "cnr_id": "comfy-core", - "ver": "0.14.1" - }, - "widgets_values": [ - "348368277_936696344247420_4680049320151257292_n.jpg", - "image" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 4, - "type": "PrimereAnyOutput", - "pos": [ - -1518.8590176831076, - 1165.6289970492114 - ], - "size": [ - 850.4711965960701, - 1262.834388548706 - ], - "flags": {}, - "order": 23, - "mode": 0, - "inputs": [ - { - "name": "input", - "type": "*", - "link": 670 - } - ], - "outputs": [], - "title": "Primere Any Debug - SCHEMA", - "properties": { - "Node name for S&R": "PrimereAnyOutput", - "cnr_id": "comfyui_primere_nodes", - "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" - }, - "widgets_values": [ - "{\n \"provider\": \"Gemini\",\n \"service\": \"Nanobanana\",\n \"response_handler\": \"Gemini_Nanobanana.py\",\n \"import_modules\": [\n \"from google import genai\",\n \"from google.genai import types\"\n ],\n \"possible_parameters\": {\n \"aspect_ratio\": [\n \"1:1\",\n \"1:4\",\n \"1:8\",\n \"2:3\",\n \"3:2\",\n \"3:4\",\n \"4:1\",\n \"4:3\",\n \"4:5\",\n \"5:4\",\n \"8:1\",\n \"9:16\",\n \"16:9\",\n \"21:9\"\n ],\n \"resolution\": [\n \"1K\",\n \"512px\",\n \"2K\",\n \"4K\"\n ],\n \"model\": [\n \"gemini-2.5-flash-image\",\n \"gemini-3-pro-image-preview\",\n \"gemini-3.1-flash-image-preview\"\n ],\n \"thinking_level\": [\n \"minimal\",\n \"high\"\n ],\n \"include_thoughts\": [\n false,\n true\n ]\n },\n \"request_exclusions\": [\n {\n \"when\": {\n \"path\": \"model\",\n \"equals\": \"gemini-2.5-flash-image\"\n },\n \"remove\": [\n \"config.thinking_config\",\n \"thinking_level\",\n \"include_thoughts\"\n ]\n },\n {\n \"when\": {\n \"path\": \"model\",\n \"equals\": \"gemini-3-pro-image-preview\"\n },\n \"remove\": [\n \"config.thinking_config\"\n ]\n }\n ],\n \"request\": {\n \"method\": \"SDK\",\n \"endpoint\": \"client.models.generate_content\",\n \"sdk_call\": {\n \"args\": [],\n \"kwargs\": {\n \"model\": \"{{model}}\",\n \"contents\": [\n \"{{prompt}}\",\n \"{{reference_images}}\"\n ],\n \"config\": {\n \"$call\": \"types.GenerateContentConfig\",\n \"$args\": [],\n \"$kwargs\": {\n \"response_modalities\": [\n \"{{config_response_modalities_0}}\"\n ],\n \"image_config\": {\n \"$call\": \"types.ImageConfig\",\n \"$args\": [],\n \"$kwargs\": {\n \"aspect_ratio\": \"{{aspect_ratio}}\",\n \"image_size\": \"{{image_size}}\"\n }\n }\n }\n }\n }\n }\n }\n}" - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 39, - "type": "LoadImage", - "pos": [ - -1960, - 580 - ], - "size": [ - 412.12756911804206, - 508.84732322692867 - ], - "flags": {}, - "order": 7, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 679 - ] - }, - { - "name": "MASK", - "type": "MASK", - "links": null - } - ], - "properties": { - "Node name for S&R": "LoadImage", - "cnr_id": "comfy-core", - "ver": "0.14.1" - }, - "widgets_values": [ - "tmpbncl5y7d.png", - "image" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 38, - "type": "LoadImage", - "pos": [ - -1912.6212466799445, - -539.9999999999999 - ], - "size": [ - 412.12756911804206, - 508.84732322692867 - ], - "flags": {}, - "order": 8, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 680 - ] - }, - { - "name": "MASK", - "type": "MASK", - "links": null - } - ], - "properties": { - "Node name for S&R": "LoadImage", - "cnr_id": "comfy-core", - "ver": "0.14.1" - }, - "widgets_values": [ - "ComfyUI_temp_ejydc_00003_.png", - "image" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 3, - "type": "PrimereAnyOutput", - "pos": [ - 573.486169897627, - -710.2392168493096 - ], - "size": [ - 450.9361328125, - 88 - ], - "flags": {}, - "order": 22, - "mode": 0, - "inputs": [ - { - "name": "input", - "type": "*", - "link": 669 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PrimereAnyOutput", - "cnr_id": "comfyui_primere_nodes", - "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" - }, - "widgets_values": [ - "Gemini" - ] - }, { "id": 41, "type": "LoadImage", "pos": [ - -1060, - 600 + -1849.529507958986, + 570.718022340393 ], "size": [ 412.12756911804206, 508.84732322692867 ], "flags": {}, - "order": 9, + "order": 1, "mode": 0, "inputs": [], "outputs": [ @@ -483,24 +90,22 @@ "id": 29, "type": "LoadImage", "pos": [ - -1970, - 10 + -2759.5295079589832, + -19.281977659606934 ], "size": [ 412.12756911804206, 508.84732322692867 ], "flags": {}, - "order": 10, + "order": 2, "mode": 0, "inputs": [], "outputs": [ { "name": "IMAGE", "type": "IMAGE", - "links": [ - 682 - ] + "links": [] }, { "name": "MASK", @@ -520,37 +125,6 @@ "color": "#432", "bgcolor": "#653" }, - { - "id": 2, - "type": "PrimereAnyOutput", - "pos": [ - 562.6930916032595, - -853.9760202140844 - ], - "size": [ - 682.0786325349364, - 88 - ], - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "input", - "type": "*", - "link": 668 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PrimereAnyOutput", - "cnr_id": "comfyui_primere_nodes", - "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" - }, - "widgets_values": [ - "" - ] - }, { "id": 44, "type": "PrimereAnyOutput", @@ -563,13 +137,13 @@ 739.8065007039345 ], "flags": {}, - "order": 28, + "order": 34, "mode": 0, "inputs": [ { "name": "input", "type": "*", - "link": 675 + "link": 719 } ], "outputs": [], @@ -580,7 +154,7 @@ "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" }, "widgets_values": [ - "None" + "{\n \"video\": {\n \"url\": \"https://v3b.fal.media/files/b/0a96fc8a/rHRdrwE_zn-BKjFKKpkQ-_video.mp4\",\n \"content_type\": \"video/mp4\",\n \"file_name\": \"video.mp4\",\n \"file_size\": 3032319\n },\n \"seed\": 1040484444\n}" ], "color": "#432", "bgcolor": "#653" @@ -597,13 +171,13 @@ 1163.5127427084483 ], "flags": {}, - "order": 27, + "order": 33, "mode": 0, "inputs": [ { "name": "input", "type": "*", - "link": 674 + "link": 718 } ], "outputs": [], @@ -614,58 +188,201 @@ "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" }, "widgets_values": [ - "None" + "[\n {\n \"schema\": {\n \"provider\": \"FAL\",\n \"service\": \"Seedance\",\n \"response_handler\": \"FAL_Seedance.py\",\n \"reference_images_handler\": \"FAL.py\",\n \"import_modules\": [\n \"import fal_client\"\n ],\n \"possible_parameters\": {\n \"aspect_ratio\": [\n \"auto\",\n \"21:9\",\n \"16:9\",\n \"4:3\",\n \"1:1\",\n \"3:4\",\n \"9:16\"\n ],\n \"duration\": [\n \"auto\",\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15\n ],\n \"resolution\": [\n \"480p\",\n \"720p\"\n ],\n \"model_type\": [\n \"reference-to-video\"\n ],\n \"version\": [\n \"2.0\"\n ],\n \"generate_audio\": [\n false,\n true\n ],\n \"with_logs\": [\n false,\n true\n ]\n },\n \"request\": {\n \"method\": \"SDK\",\n \"endpoint\": \"fal_client.subscribe\",\n \"sdk_call\": {\n \"args\": [\n \"bytedance/seedance-{{version}}/fast/{{model_type}}\"\n ],\n \"kwargs\": {\n \"arguments\": {\n \"prompt\": \"{{prompt}}\",\n \"image_urls\": \"{{reference_images}}\",\n \"video_urls\": \"{{custom_path_1}}\",\n \"audio_urls\": \"{{custom_path_2}}\",\n \"resolution\": \"{{resolution}}\",\n \"seed\": \"{{seed}}\",\n \"duration\": \"{{duration}}\",\n \"aspect_ratio\": \"{{aspect_ratio}}\",\n \"generate_audio\": \"{{generate_audio}}\",\n \"with_logs\": \"{{with_logs}}\"\n }\n }\n }\n }\n },\n \"selected_parameters\": {\n \"prompt\": \"A hyper-realistic UGC-style medium close-up of a woman [Image2] in her standing in her kitchen [Image3], filmed vertically as if she's holding her phone at arm's length for a TikTok or Instagram Reel; she is holding up a compact mirrorless camera on [Image1] in one hand close to the lens so it's clearly visible, her expression bright and genuine \\u2014 not overly polished \\u2014 as she says directly to the camera: \\\"Okay I never do this, but I genuinely have to talk about this camera \\u2014 I've had it for three weeks and it has not left my bag, the photos look like film straight out of it, no editing, and it literally fits in my jacket pocket\\\"; Her dog [Image4] barking loud while she talking. She turns the camera around to briefly show its compact size against her hand, natural skin texture including pores, subtle handheld shake, ambient room tone, and unfiltered warm color grading that feels like an authentic creator review rather than a produced advertisement.\",\n \"width\": 1365,\n \"height\": 768,\n \"batch\": 1,\n \"aspect_ratio\": \"16:9\",\n \"debug_mode\": false,\n \"seed\": 429091895475161,\n \"with_logs\": false,\n \"model_type\": \"reference-to-video\",\n \"version\": \"2.0\",\n \"duration\": \"8\",\n \"resolution\": \"720p\",\n \"generate_audio\": true\n },\n \"used_values\": {\n \"version\": \"2.0\",\n \"model_type\": \"reference-to-video\",\n \"prompt\": \"A hyper-realistic UGC-style medium close-up of a woman [Image2] in her standing in her kitchen [Image3], filmed vertically as if she's holding her phone at arm's length for a TikTok or Instagram Reel; she is holding up a compact mirrorless camera on [Image1] in one hand close to the lens so it's clearly visible, her expression bright and genuine \\u2014 not overly polished \\u2014 as she says directly to the camera: \\\"Okay I never do this, but I genuinely have to talk about this camera \\u2014 I've had it for three weeks and it has not left my bag, the photos look like film straight out of it, no editing, and it literally fits in my jacket pocket\\\"; Her dog [Image4] barking loud while she talking. She turns the camera around to briefly show its compact size against her hand, natural skin texture including pores, subtle handheld shake, ambient room tone, and unfiltered warm color grading that feels like an authentic creator review rather than a produced advertisement.\",\n \"reference_images\": \"[reference_images omitted]\",\n \"resolution\": \"720p\",\n \"seed\": 429091895475161,\n \"duration\": \"8\",\n \"aspect_ratio\": \"16:9\",\n \"generate_audio\": true,\n \"with_logs\": false\n },\n \"selected_service\": \"Seedance\",\n \"rendered\": {\n \"provider\": \"FAL\",\n \"endpoint\": \"fal_client.subscribe\",\n \"method\": \"SDK\",\n \"headers\": {},\n \"query\": {},\n \"body\": null,\n \"sdk_call\": {\n \"args\": [\n \"bytedance/seedance-2.0/fast/reference-to-video\"\n ],\n \"kwargs\": {\n \"arguments\": {\n \"prompt\": \"A hyper-realistic UGC-style medium close-up of a woman [Image2] in her standing in her kitchen [Image3], filmed vertically as if she's holding her phone at arm's length for a TikTok or Instagram Reel; she is holding up a compact mirrorless camera on [Image1] in one hand close to the lens so it's clearly visible, her expression bright and genuine \\u2014 not overly polished \\u2014 as she says directly to the camera: \\\"Okay I never do this, but I genuinely have to talk about this camera \\u2014 I've had it for three weeks and it has not left my bag, the photos look like film straight out of it, no editing, and it literally fits in my jacket pocket\\\"; Her dog [Image4] barking loud while she talking. She turns the camera around to briefly show its compact size against her hand, natural skin texture including pores, subtle handheld shake, ambient room tone, and unfiltered warm color grading that feels like an authentic creator review rather than a produced advertisement.\",\n \"image_urls\": [\n \"https://v3b.fal.media/files/b/0a96fc7b/cmDJ6ITylibfpVU7VlpjT_FAL_edit_1553.png\",\n \"https://v3b.fal.media/files/b/0a96fc7b/LWw8syByogFX11AvggMLK_FAL_edit_5510.png\",\n \"https://v3b.fal.media/files/b/0a96fc7b/cEG36H0Rdv6_UnDx4byGV_FAL_edit_4390.png\",\n \"https://v3b.fal.media/files/b/0a96fc7c/ruNmpNHccb0TCSjrhUj5H_FAL_edit_7572.png\"\n ],\n \"resolution\": \"720p\",\n \"seed\": 429091895475161,\n \"duration\": \"8\",\n \"aspect_ratio\": \"16:9\",\n \"generate_audio\": true,\n \"with_logs\": false\n }\n }\n },\n \"request_exclusions\": []\n },\n \"api_result\": {\n \"video\": {\n \"url\": \"https://v3b.fal.media/files/b/0a96fc8a/rHRdrwE_zn-BKjFKKpkQ-_video.mp4\",\n \"content_type\": \"video/mp4\",\n \"file_name\": \"video.mp4\",\n \"file_size\": 3032319\n },\n \"seed\": 1040484444\n },\n \"api_error\": null\n }\n]" ], "color": "#2a363b", "bgcolor": "#3f5159" }, { - "id": 6, - "type": "PrimereAnyOutput", + "id": 27, + "type": "PrimerePreviewImage", "pos": [ - -611.8018295909516, - 1557.6890585049641 + 1299.5657499361994, + -535.7278327133808 ], "size": [ - 906.2637000063987, - 628.220628990278 + 1073.2593828125005, + 1628.4858571984864 ], "flags": {}, "order": 26, "mode": 0, "inputs": [ { - "name": "input", - "type": "*", - "link": 673 + "name": "images", + "shape": 7, + "type": "IMAGE", + "link": 711 + }, + { + "name": "image_metadata", + "shape": 7, + "type": "TUPLE", + "link": null } ], "outputs": [], - "title": "Primere Any Debug - REQUEST BODY", + "properties": { + "Node name for S&R": "PrimerePreviewImage", + "cnr_id": "comfyui_primere_nodes", + "ver": "834548535af27d52c9b7e6359af399a18cd8260e" + }, + "widgets_values": [ + false, + "jpeg", + 0, + 95, + "Checkpoint", + "Overwrite", + false, + "ERROR: Cannot list target for Checkpoint", + "ERROR: Cannot list target for Checkpoint", + null + ] + }, + { + "id": 5, + "type": "PrimereAnyOutput", + "pos": [ + -622.5113949863711, + 654.0087654979694 + ], + "size": [ + 926.2206882503098, + 1078.7652401045225 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "input", + "type": "*", + "link": 715 + } + ], + "outputs": [], + "title": "Primere Any Debug - RENDERED", "properties": { "Node name for S&R": "PrimereAnyOutput", "cnr_id": "comfyui_primere_nodes", "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" }, "widgets_values": [ - "{\n \"model\": \"gemini-2.5-flash-image\",\n \"prompt\": \"The woman drinks the champagne glass, throws it behind her, the glass breaks on the ground, and the camera shows her posing from a distance.\",\n \"config_response_modalities_0\": \"IMAGE\",\n \"aspect_ratio\": \"9:16\",\n \"image_size\": \"1K\"\n}" + "{\n \"provider\": \"FAL\",\n \"endpoint\": \"fal_client.subscribe\",\n \"method\": \"SDK\",\n \"headers\": {},\n \"query\": {},\n \"body\": null,\n \"sdk_call\": {\n \"args\": [\n \"bytedance/seedance-2.0/fast/reference-to-video\"\n ],\n \"kwargs\": {\n \"arguments\": {\n \"prompt\": \"A hyper-realistic UGC-style medium close-up of a woman [Image2] in her standing in her kitchen [Image3], filmed vertically as if she's holding her phone at arm's length for a TikTok or Instagram Reel; she is holding up a compact mirrorless camera on [Image1] in one hand close to the lens so it's clearly visible, her expression bright and genuine \\u2014 not overly polished \\u2014 as she says directly to the camera: \\\"Okay I never do this, but I genuinely have to talk about this camera \\u2014 I've had it for three weeks and it has not left my bag, the photos look like film straight out of it, no editing, and it literally fits in my jacket pocket\\\"; Her dog [Image4] barking loud while she talking. She turns the camera around to briefly show its compact size against her hand, natural skin texture including pores, subtle handheld shake, ambient room tone, and unfiltered warm color grading that feels like an authentic creator review rather than a produced advertisement.\",\n \"image_urls\": [\n \"https://v3b.fal.media/files/b/0a96fc7b/cmDJ6ITylibfpVU7VlpjT_FAL_edit_1553.png\",\n \"https://v3b.fal.media/files/b/0a96fc7b/LWw8syByogFX11AvggMLK_FAL_edit_5510.png\",\n \"https://v3b.fal.media/files/b/0a96fc7b/cEG36H0Rdv6_UnDx4byGV_FAL_edit_4390.png\",\n \"https://v3b.fal.media/files/b/0a96fc7c/ruNmpNHccb0TCSjrhUj5H_FAL_edit_7572.png\"\n ],\n \"resolution\": \"720p\",\n \"seed\": 429091895475161,\n \"duration\": \"8\",\n \"aspect_ratio\": \"16:9\",\n \"generate_audio\": true,\n \"with_logs\": false\n }\n }\n },\n \"request_exclusions\": []\n}" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 47, + "type": "PrimereAnyOutput", + "pos": [ + 356.4381352104812, + 677.639492808187 + ], + "size": [ + 887.1002652508323, + 1079.130111868482 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "input", + "type": "*", + "link": 716 + } + ], + "outputs": [], + "title": "Primere Any Debug - RAW PAYLOAD", + "properties": { + "Node name for S&R": "PrimereAnyOutput", + "cnr_id": "comfyui_primere_nodes", + "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" + }, + "widgets_values": [ + "{\n \"arguments\": {\n \"prompt\": \"A hyper-realistic UGC-style medium close-up of a woman [Image2] in her standing in her kitchen [Image3], filmed vertically as if she's holding her phone at arm's length for a TikTok or Instagram Reel; she is holding up a compact mirrorless camera on [Image1] in one hand close to the lens so it's clearly visible, her expression bright and genuine \\u2014 not overly polished \\u2014 as she says directly to the camera: \\\"Okay I never do this, but I genuinely have to talk about this camera \\u2014 I've had it for three weeks and it has not left my bag, the photos look like film straight out of it, no editing, and it literally fits in my jacket pocket\\\"; Her dog [Image4] barking loud while she talking. She turns the camera around to briefly show its compact size against her hand, natural skin texture including pores, subtle handheld shake, ambient room tone, and unfiltered warm color grading that feels like an authentic creator review rather than a produced advertisement.\",\n \"image_urls\": [\n \"https://v3b.fal.media/files/b/0a96fc7b/cmDJ6ITylibfpVU7VlpjT_FAL_edit_1553.png\",\n \"https://v3b.fal.media/files/b/0a96fc7b/LWw8syByogFX11AvggMLK_FAL_edit_5510.png\",\n \"https://v3b.fal.media/files/b/0a96fc7b/cEG36H0Rdv6_UnDx4byGV_FAL_edit_4390.png\",\n \"https://v3b.fal.media/files/b/0a96fc7c/ruNmpNHccb0TCSjrhUj5H_FAL_edit_7572.png\"\n ],\n \"resolution\": \"720p\",\n \"seed\": 429091895475161,\n \"duration\": \"8\",\n \"aspect_ratio\": \"16:9\",\n \"generate_audio\": true,\n \"with_logs\": false\n }\n}" ], "color": "#232", "bgcolor": "#353" }, + { + "id": 3, + "type": "PrimereAnyOutput", + "pos": [ + 481.6274331758254, + -694.7306366207329 + ], + "size": [ + 450.9361328125, + 88 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "input", + "type": "*", + "link": 713 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PrimereAnyOutput", + "cnr_id": "comfyui_primere_nodes", + "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" + }, + "widgets_values": [ + "FAL" + ] + }, + { + "id": 2, + "type": "PrimereAnyOutput", + "pos": [ + 468.4484723912234, + -880.2213665419043 + ], + "size": [ + 1147.3371206672605, + 105.8946101654052 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "input", + "type": "*", + "link": 712 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PrimereAnyOutput", + "cnr_id": "comfyui_primere_nodes", + "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" + }, + "widgets_values": [ + "true" + ] + }, { "id": 16, "type": "PrimereFastSeed", "pos": [ - 919.9262216082626, - -135.12732131406113 + 881.7511187872176, + 99.88780524233536 ], "size": [ 330.364340787964, 149.12278620629877 ], "flags": {}, - "order": 11, + "order": 3, "mode": 0, "inputs": [], "outputs": [ @@ -674,7 +391,7 @@ "type": "INT", "links": [ 53, - 666 + 706 ] } ], @@ -686,33 +403,625 @@ "widgets_values": [ "Random", 42, - "Last seed: [654139151080403]" + "Last seed: [188328346181536]" ], "color": "#223", "bgcolor": "#335" }, { - "id": 9, - "type": "PrimitiveStringMultiline", + "id": 22, + "type": "LoadImage", "pos": [ - 480.79284780821257, - -541.1178926016723 + -1837.7319994455945, + -562.5433956546383 ], "size": [ - 776.6426780712893, - 348.84780081063036 + 412.12756911804206, + 508.84732322692867 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "2025-03-18_16-10-01.jpg", + "image" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 37, + "type": "LoadImage", + "pos": [ + -3199.5295079589832, + 540.718022340393 + ], + "size": [ + 412.12756911804206, + 508.84732322692867 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 684 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "2025-03-21_09-26-43.jpg", + "image" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 40, + "type": "LoadImage", + "pos": [ + -2299.529507958986, + 560.718022340393 + ], + "size": [ + 412.12756911804206, + 508.84732322692867 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 685 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "2025-03-22_15-24-00.jpg", + "image" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 28, + "type": "LoadImage", + "pos": [ + -3189.5295079589832, + -19.281977659606934 + ], + "size": [ + 412.12756911804206, + 508.84732322692867 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 683 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "4FJRSS25ACABU531-94S-P-META.jpg", + "image" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 75, + "type": "LoadImage", + "pos": [ + 462.3019554064942, + 202.64816100585924 + ], + "size": [ + 327.5351346026613, + 386.2967736602784 + ], + "flags": {}, + "order": 8, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 701 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "Image_A642_20260902_134125_832184619664671_2072x3024_1.jpg", + "image" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 58, + "type": "LoadImage", + "pos": [ + -615.4746356323245, + 208.02991470031756 + ], + "size": [ + 327.5351346026613, + 386.2967736602784 + ], + "flags": {}, + "order": 9, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 700 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "Image_A662_20260902_134540_258750579776_2072x3024_1.jpg", + "image" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 36, + "type": "LoadImage", + "pos": [ + -1849.529507958986, + 0.7180223403930712 + ], + "size": [ + 412.12756911804206, + 508.84732322692867 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 688 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "IMG_1074.jpg", + "image" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 78, + "type": "PrimerePathSelector", + "pos": [ + -1393.1523639885643, + -544.0564625160083 + ], + "size": [ + 760.2021982666013, + 163.5916230102539 + ], + "flags": {}, + "order": 11, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "final_path", + "type": "STRING", + "links": [ + 702 + ] + }, + { + "name": "path_type", + "type": "BOOLEAN", + "links": null + } + ], + "properties": { + "Node name for S&R": "PrimerePathSelector" + }, + "widgets_values": [ + true, + null, + "E:/!Works/SZOVEGEK/Cikkek/substack/Images/b76a65a3-b7c4-40fc-ab51-beb7aafedb5c_1376x768.jpg" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 82, + "type": "PrimerePathSelector", + "pos": [ + -1403.519213475869, + 331.62875781480193 + ], + "size": [ + 760.2021982666013, + 163.5916230102539 ], "flags": {}, "order": 12, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "final_path", + "type": "STRING", + "links": [ + 710 + ] + }, + { + "name": "path_type", + "type": "BOOLEAN", + "links": null + } + ], + "properties": { + "Node name for S&R": "PrimerePathSelector" + }, + "widgets_values": [ + true, + null, + "E:/!Works/SZOVEGEK/DTP-munka-angol.txt" + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 81, + "type": "PrimerePathSelector", + "pos": [ + -1397.674114342568, + 103.21794630967511 + ], + "size": [ + 760.2021982666013, + 163.5916230102539 + ], + "flags": {}, + "order": 13, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "final_path", + "type": "STRING", + "links": [ + 709 + ] + }, + { + "name": "path_type", + "type": "BOOLEAN", + "links": null + } + ], + "properties": { + "Node name for S&R": "PrimerePathSelector" + }, + "widgets_values": [ + true, + null, + "E:/!Works/SZOVEGEK/Leslie_Perjes_CV_2026_Final-HU.docx" + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 80, + "type": "PrimerePathSelector", + "pos": [ + -1395.0823126091695, + -116.51679482496837 + ], + "size": [ + 760.2021982666013, + 163.5916230102539 + ], + "flags": {}, + "order": 14, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "final_path", + "type": "STRING", + "links": [ + 708 + ] + }, + { + "name": "path_type", + "type": "BOOLEAN", + "links": null + } + ], + "properties": { + "Node name for S&R": "PrimerePathSelector" + }, + "widgets_values": [ + true, + null, + "E:/!Works/20260329_200310.jpg" + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 79, + "type": "PrimerePathSelector", + "pos": [ + -1390.32152679374, + -334.0824625160083 + ], + "size": [ + 760.2021982666013, + 163.5916230102539 + ], + "flags": {}, + "order": 15, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "final_path", + "type": "STRING", + "links": [ + 707 + ] + }, + { + "name": "path_type", + "type": "BOOLEAN", + "links": null + } + ], + "properties": { + "Node name for S&R": "PrimerePathSelector" + }, + "widgets_values": [ + true, + null, + "E:/!Works/670730357_1386805386819731_7576913027516684053_n.jpg" + ], + "color": "#323", + "bgcolor": "#535" + }, + { + "id": 83, + "type": "LoadImage", + "pos": [ + -2712.8289468353855, + -1138.7880451001506 + ], + "size": [ + 412.12756911804206, + 508.84732322692867 + ], + "flags": {}, + "order": 16, "mode": 0, "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 697 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "r8Q6tkZK5795yi9rLf20h_EfRZdjbd.jpg", + "image" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 4, + "type": "PrimereAnyOutput", + "pos": [ + -1837.7398895556041, + 1168.2535218522207 + ], + "size": [ + 1190.348591275147, + 1020.0648981547242 + ], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "input", + "type": "*", + "link": 714 + } + ], + "outputs": [], + "title": "Primere Any Debug - SCHEMA", + "properties": { + "Node name for S&R": "PrimereAnyOutput", + "cnr_id": "comfyui_primere_nodes", + "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" + }, + "widgets_values": [ + "{\n \"provider\": \"FAL\",\n \"service\": \"Seedance\",\n \"response_handler\": \"FAL_Seedance.py\",\n \"reference_images_handler\": \"FAL.py\",\n \"import_modules\": [\n \"import fal_client\"\n ],\n \"possible_parameters\": {\n \"aspect_ratio\": [\n \"auto\",\n \"21:9\",\n \"16:9\",\n \"4:3\",\n \"1:1\",\n \"3:4\",\n \"9:16\"\n ],\n \"duration\": [\n \"auto\",\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15\n ],\n \"resolution\": [\n \"480p\",\n \"720p\"\n ],\n \"model_type\": [\n \"reference-to-video\"\n ],\n \"version\": [\n \"2.0\"\n ],\n \"generate_audio\": [\n false,\n true\n ],\n \"with_logs\": [\n false,\n true\n ]\n },\n \"request\": {\n \"method\": \"SDK\",\n \"endpoint\": \"fal_client.subscribe\",\n \"sdk_call\": {\n \"args\": [\n \"bytedance/seedance-{{version}}/fast/{{model_type}}\"\n ],\n \"kwargs\": {\n \"arguments\": {\n \"prompt\": \"{{prompt}}\",\n \"image_urls\": \"{{reference_images}}\",\n \"video_urls\": \"{{custom_path_1}}\",\n \"audio_urls\": \"{{custom_path_2}}\",\n \"resolution\": \"{{resolution}}\",\n \"seed\": \"{{seed}}\",\n \"duration\": \"{{duration}}\",\n \"aspect_ratio\": \"{{aspect_ratio}}\",\n \"generate_audio\": \"{{generate_audio}}\",\n \"with_logs\": \"{{with_logs}}\"\n }\n }\n }\n }\n}" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 6, + "type": "PrimereAnyOutput", + "pos": [ + -608.2165842296235, + 1796.1036654385578 + ], + "size": [ + 906.2637000063987, + 628.220628990278 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "input", + "type": "*", + "link": 717 + } + ], + "outputs": [], + "title": "Primere Any Debug - REQUEST BODY", + "properties": { + "Node name for S&R": "PrimereAnyOutput", + "cnr_id": "comfyui_primere_nodes", + "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" + }, + "widgets_values": [ + "{\n \"version\": \"2.0\",\n \"model_type\": \"reference-to-video\",\n \"prompt\": \"A hyper-realistic UGC-style medium close-up of a woman [Image2] in her standing in her kitchen [Image3], filmed vertically as if she's holding her phone at arm's length for a TikTok or Instagram Reel; she is holding up a compact mirrorless camera on [Image1] in one hand close to the lens so it's clearly visible, her expression bright and genuine \\u2014 not overly polished \\u2014 as she says directly to the camera: \\\"Okay I never do this, but I genuinely have to talk about this camera \\u2014 I've had it for three weeks and it has not left my bag, the photos look like film straight out of it, no editing, and it literally fits in my jacket pocket\\\"; Her dog [Image4] barking loud while she talking. She turns the camera around to briefly show its compact size against her hand, natural skin texture including pores, subtle handheld shake, ambient room tone, and unfiltered warm color grading that feels like an authentic creator review rather than a produced advertisement.\",\n \"reference_images\": \"[reference_images omitted]\",\n \"resolution\": \"720p\",\n \"seed\": 429091895475161,\n \"duration\": \"8\",\n \"aspect_ratio\": \"16:9\",\n \"generate_audio\": true,\n \"with_logs\": false\n}" + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 55, + "type": "PrimitiveStringMultiline", + "pos": [ + 1634.981341018417, + -979.0678606226011 + ], + "size": [ + 733.2619240917973, + 382.46790301705124 + ], + "flags": {}, + "order": 17, + "mode": 4, + "inputs": [], "outputs": [ { "name": "STRING", "type": "STRING", - "links": [ - 659 - ] + "links": [] } ], "properties": { @@ -721,24 +1030,106 @@ "ver": "0.14.1" }, "widgets_values": [ - "The woman drinks the champagne glass, throws it behind her, the glass breaks on the ground, and the camera shows her posing from a distance." + "The woman is sitting on the barstool closest to the viewer in the blue kitchen. Paint her hair red, give her a glass of champagne, and dress her in a black leather jacket with the zipper pulled down to reveal a white T-shirt underneath. Place a baseball cap on her head. She is wearing black jeans and a black belt. She is also wearing an elegant, silky, red women's neck scarf. Place the porcelain vase on the kitchen table. She holds a bug spray in her other hand and sprays it at a giant spider climbing on the wall. The woman is frightened. Her dog barks at the spider. Keep everything else unchanged. Follow all attached reference images.\n\ne:\\!Works\\AI\\AIPICS\\ComfyAPI\\[time(%Y-%m-Week-%W)]" ], "color": "#232", "bgcolor": "#353" }, + { + "id": 38, + "type": "LoadImage", + "pos": [ + -2285.6956236696883, + -570.3665143814085 + ], + "size": [ + 412.12756911804206, + 508.84732322692867 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 720 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "ComfyUI_temp_ejydc_00003_.png", + "image" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 39, + "type": "LoadImage", + "pos": [ + -2716.993897793576, + -571.7587634750363 + ], + "size": [ + 412.12756911804206, + 508.84732322692867 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 721 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "tmpbncl5y7d.png", + "image" + ], + "color": "#432", + "bgcolor": "#653" + }, { "id": 15, "type": "PrimereResolution", "pos": [ - 907.2304520484324, - 74.63197113044764 + 854.7396610950634, + 301.29631237556475 ], "size": [ 361.37166959228534, 310 ], "flags": {}, - "order": 17, + "order": 22, "mode": 0, "inputs": [ { @@ -765,14 +1156,14 @@ "name": "WIDTH", "type": "INT", "links": [ - 663 + 703 ] }, { "name": "HEIGHT", "type": "INT", "links": [ - 664 + 704 ] }, { @@ -784,7 +1175,7 @@ "name": "ASPECT_RATIO", "type": "STRING", "links": [ - 665 + 705 ] } ], @@ -798,7 +1189,7 @@ false, 1024, false, - "Vertical", + "Horizontal", false, false, 1.6, @@ -808,380 +1199,27 @@ "bgcolor": "#353" }, { - "id": 42, - "type": "PreviewImage", + "id": 18, + "type": "LoadImage", "pos": [ - -1905.940566463288, - -1196.1764179372424 + -2759.6928296656233, + 538.6656744396611 ], "size": [ - 2324.0069677273495, - 581.7454612396214 - ], - "flags": {}, - "order": 18, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 691 - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PreviewImage" - }, - "widgets_values": [] - }, - { - "id": 55, - "type": "PrimitiveStringMultiline", - "pos": [ - 1408.3168031778405, - -1012.4710264421508 - ], - "size": [ - 733.2619240917973, - 382.46790301705124 - ], - "flags": {}, - "order": 13, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "STRING", - "type": "STRING", - "links": [] - } - ], - "properties": { - "Node name for S&R": "PrimitiveStringMultiline", - "cnr_id": "comfy-core", - "ver": "0.14.1" - }, - "widgets_values": [ - "The woman is sitting on the barstool closest to the viewer in the blue kitchen. Paint her hair red, give her a glass of champagne, and dress her in a black leather jacket with the zipper pulled down to reveal a white T-shirt underneath. Place a baseball cap on her head. She is wearing black jeans and a black belt. She is also wearing an elegant, silky, red women's neck scarf. Place the porcelain vase on the kitchen table. She holds a bug spray in her other hand and sprays it at a giant spider climbing on the wall. The woman is frightened. Her dog barks at the spider. Keep everything else unchanged. Follow all attached reference images.\n\ne:\\!Works\\AI\\AIPICS\\ComfyAPI\\[time(%Y-%m-Week-%W)]" - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 76, - "type": "PrimereApiProcessor", - "pos": [ - -253.36638311324856, - -548.3233034269159 - ], - "size": [ - 687.9337945859295, - 950 - ], - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "prompt", - "type": "STRING", - "link": 659 - }, - { - "name": "negative_prompt", - "shape": 7, - "type": "STRING", - "link": null - }, - { - "name": "reference_images", - "shape": 7, - "type": "IMAGE", - "link": 690 - }, - { - "name": "first_image", - "shape": 7, - "type": "IMAGE", - "link": 678 - }, - { - "name": "last_image", - "shape": 7, - "type": "IMAGE", - "link": 662 - }, - { - "name": "frontal_image", - "shape": 7, - "type": "IMAGE", - "link": null - }, - { - "name": "reference_video", - "shape": 7, - "type": "VIDEO", - "link": null - }, - { - "name": "width", - "shape": 7, - "type": "INT", - "link": 663 - }, - { - "name": "height", - "shape": 7, - "type": "INT", - "link": 664 - }, - { - "name": "aspect_ratio", - "shape": 7, - "type": "STRING", - "link": 665 - }, - { - "name": "seed", - "shape": 7, - "type": "INT", - "link": 666 - } - ], - "outputs": [ - { - "name": "RESULT", - "type": "IMAGE", - "links": [ - 667 - ] - }, - { - "name": "CLIENT", - "type": "APICLIENT", - "links": [ - 668 - ] - }, - { - "name": "PROVIDER", - "type": "STRING", - "links": [ - 669 - ] - }, - { - "name": "SCHEMA", - "type": "TUPLE", - "links": [ - 670 - ] - }, - { - "name": "RENDERED", - "type": "TUPLE", - "links": [ - 671 - ] - }, - { - "name": "RAW_PAYLOAD", - "type": "TUPLE", - "links": [ - 672 - ] - }, - { - "name": "REQUEST_BODY", - "type": "TUPLE", - "links": [ - 673 - ] - }, - { - "name": "API_SCHEMAS", - "type": "TUPLE", - "links": [ - 674 - ] - }, - { - "name": "API_RESULT", - "type": "TUPLE", - "links": [ - 675 - ] - } - ], - "properties": { - "Node name for S&R": "PrimereApiProcessor" - }, - "widgets_values": [ - null, - true, - true, - "Gemini", - "Nanobanana", - 1, - true, - "e:\\!Works\\AI\\AIPICS\\ComfyAPI\\[time(%Y-%m-Week-%W)]", - "None", - true, - true, - true, - "API", - "_", - true, - true, - 1, - false, - "jpg", - 95, - true, - true, - "1K", - "gemini-2.5-flash-image", - "minimal", - false - ], - "color": "#233", - "bgcolor": "#355" - }, - { - "id": 27, - "type": "PrimerePreviewImage", - "pos": [ - 1299.5657499361994, - -535.7278327133808 - ], - "size": [ - 1073.2593828125005, - 1628.4858571984864 + 412.12756911804206, + 508.84732322692867 ], "flags": {}, "order": 20, "mode": 0, - "inputs": [ - { - "name": "images", - "shape": 7, - "type": "IMAGE", - "link": 667 - }, - { - "name": "image_metadata", - "shape": 7, - "type": "TUPLE", - "link": null - } - ], - "outputs": [], - "properties": { - "Node name for S&R": "PrimerePreviewImage", - "cnr_id": "comfyui_primere_nodes", - "ver": "834548535af27d52c9b7e6359af399a18cd8260e" - }, - "widgets_values": [ - false, - "jpeg", - 0, - 95, - "Checkpoint", - "Overwrite", - false, - "ERROR: Cannot list target for Checkpoint", - null - ] - }, - { - "id": 5, - "type": "PrimereAnyOutput", - "pos": [ - -622.5113949863711, - 654.0087654979694 - ], - "size": [ - 926.2206882503098, - 1078.7652401045225 - ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "input", - "type": "*", - "link": 671 - } - ], - "outputs": [], - "title": "Primere Any Debug - RENDERED", - "properties": { - "Node name for S&R": "PrimereAnyOutput", - "cnr_id": "comfyui_primere_nodes", - "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" - }, - "widgets_values": [ - "{\n \"provider\": \"Gemini\",\n \"endpoint\": \"client.models.generate_content\",\n \"method\": \"SDK\",\n \"headers\": {},\n \"query\": {},\n \"body\": null,\n \"sdk_call\": {\n \"kwargs\": {\n \"model\": \"gemini-2.5-flash-image\",\n \"contents\": [\n \"The woman drinks the champagne glass, throws it behind her, the glass breaks on the ground, and the camera shows her posing from a distance.\"\n ],\n \"config\": {\n \"$call\": \"types.GenerateContentConfig\",\n \"$kwargs\": {\n \"response_modalities\": [\n \"IMAGE\"\n ],\n \"image_config\": {\n \"$call\": \"types.ImageConfig\",\n \"$kwargs\": {\n \"aspect_ratio\": \"9:16\",\n \"image_size\": \"1K\"\n }\n }\n }\n }\n }\n },\n \"request_exclusions\": [\n {\n \"when\": {\n \"path\": \"model\",\n \"equals\": \"gemini-2.5-flash-image\"\n },\n \"remove\": [\n \"config.thinking_config\",\n \"thinking_level\",\n \"include_thoughts\"\n ]\n },\n {\n \"when\": {\n \"path\": \"model\",\n \"equals\": \"gemini-3-pro-image-preview\"\n },\n \"remove\": [\n \"config.thinking_config\"\n ]\n }\n ]\n}" - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 47, - "type": "PrimereAnyOutput", - "pos": [ - 356.4381352104812, - 677.639492808187 - ], - "size": [ - 887.1002652508323, - 1079.130111868482 - ], - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [ - { - "name": "input", - "type": "*", - "link": 672 - } - ], - "outputs": [], - "title": "Primere Any Debug - RAW PAYLOAD", - "properties": { - "Node name for S&R": "PrimereAnyOutput", - "cnr_id": "comfyui_primere_nodes", - "ver": "ce14e5d0f46aaa12155853e05132bffb2ee70361" - }, - "widgets_values": [ - "{\n \"model\": \"gemini-2.5-flash-image\",\n \"contents\": [\n \"The woman drinks the champagne glass, throws it behind her, the glass breaks on the ground, and the camera shows her posing from a distance.\"\n ],\n \"config\": {\n \"$call\": \"types.GenerateContentConfig\",\n \"$kwargs\": {\n \"response_modalities\": [\n \"IMAGE\"\n ],\n \"image_config\": {\n \"$call\": \"types.ImageConfig\",\n \"$kwargs\": {\n \"aspect_ratio\": \"9:16\",\n \"image_size\": \"1K\"\n }\n }\n }\n }\n}" - ], - "color": "#232", - "bgcolor": "#353" - }, - { - "id": 58, - "type": "LoadImage", - "pos": [ - -614.3897861450196, - 140.78979964904784 - ], - "size": [ - 327.5351346026613, - 386.2967736602784 - ], - "flags": {}, - "order": 14, - "mode": 4, "inputs": [], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ - 678 + 689, + 722 ] }, { @@ -1196,48 +1234,7 @@ "ver": "0.14.1" }, "widgets_values": [ - "Image_A662_20260902_134540_258750579776_2072x3024_1.jpg", - "image" - ], - "color": "#432", - "bgcolor": "#653" - }, - { - "id": 75, - "type": "LoadImage", - "pos": [ - 474.340228125, - 195.38193028869628 - ], - "size": [ - 327.5351346026613, - 386.2967736602784 - ], - "flags": {}, - "order": 15, - "mode": 4, - "inputs": [], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 662 - ] - }, - { - "name": "MASK", - "type": "MASK", - "links": null - } - ], - "properties": { - "Node name for S&R": "LoadImage", - "cnr_id": "comfy-core", - "ver": "0.14.1" - }, - "widgets_values": [ - "Image_A642_20260902_134125_832184619664671_2072x3024_1.jpg", + "348368277_936696344247420_4680049320151257292_n.jpg", "image" ], "color": "#432", @@ -1255,31 +1252,31 @@ 622 ], "flags": {}, - "order": 16, + "order": 23, "mode": 0, "inputs": [ { "name": "image", "type": "IMAGE", - "link": 679 + "link": 697 }, { "name": "image_2", "shape": 7, "type": "IMAGE", - "link": 680 + "link": 720 }, { "name": "image_3", "shape": 7, "type": "IMAGE", - "link": 681 + "link": 721 }, { "name": "image_4", "shape": 7, "type": "IMAGE", - "link": 682 + "link": 722 }, { "name": "image_5", @@ -1359,7 +1356,7 @@ "name": "IMAGE_LIST", "type": "IMAGE", "links": [ - 690 + 699 ] }, { @@ -1379,8 +1376,8 @@ "Node name for S&R": "PrimereMultiImage" }, "widgets_values": [ - false, - 3, + true, + 4, true, 1.2, true, @@ -1394,6 +1391,274 @@ ], "color": "#432", "bgcolor": "#653" + }, + { + "id": 42, + "type": "PreviewImage", + "pos": [ + -1907.1337043038639, + -1180.6678131342337 + ], + "size": [ + 2324.0069677273495, + 581.7454612396214 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 691 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 9, + "type": "PrimitiveStringMultiline", + "pos": [ + 480.79284780821257, + -541.1178926016723 + ], + "size": [ + 790.9581696081548, + 595.7926347113871 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 698 + ] + } + ], + "properties": { + "Node name for S&R": "PrimitiveStringMultiline", + "cnr_id": "comfy-core", + "ver": "0.14.1" + }, + "widgets_values": [ + "A hyper-realistic UGC-style medium close-up of a woman [Image2] in her standing in her kitchen [Image3], filmed vertically as if she's holding her phone at arm's length for a TikTok or Instagram Reel; she is holding up a compact mirrorless camera on [Image1] in one hand close to the lens so it's clearly visible, her expression bright and genuine — not overly polished — as she says directly to the camera: \"Okay I never do this, but I genuinely have to talk about this camera — I've had it for three weeks and it has not left my bag, the photos look like film straight out of it, no editing, and it literally fits in my jacket pocket\"; Her dog [Image4] barking loud while she talking. She turns the camera around to briefly show its compact size against her hand, natural skin texture including pores, subtle handheld shake, ambient room tone, and unfiltered warm color grading that feels like an authentic creator review rather than a produced advertisement." + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 84, + "type": "PrimereApiProcessor", + "pos": [ + -253.36638311324856, + -548.3233034269159 + ], + "size": [ + 687.9337945859295, + 1142 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "prompt", + "type": "STRING", + "link": 698 + }, + { + "name": "negative_prompt", + "shape": 7, + "type": "STRING", + "link": null + }, + { + "name": "reference_images", + "shape": 7, + "type": "IMAGE", + "link": 699 + }, + { + "name": "first_image", + "shape": 7, + "type": "IMAGE", + "link": 700 + }, + { + "name": "last_image", + "shape": 7, + "type": "IMAGE", + "link": 701 + }, + { + "name": "frontal_image", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "name": "reference_video", + "shape": 7, + "type": "STRING", + "link": 702 + }, + { + "name": "width", + "shape": 7, + "type": "INT", + "link": 703 + }, + { + "name": "height", + "shape": 7, + "type": "INT", + "link": 704 + }, + { + "name": "aspect_ratio", + "shape": 7, + "type": "STRING", + "link": 705 + }, + { + "name": "seed", + "shape": 7, + "type": "INT", + "link": 706 + }, + { + "name": "custom_path_1", + "shape": 7, + "type": "STRING", + "link": 707 + }, + { + "name": "custom_path_2", + "shape": 7, + "type": "STRING", + "link": 708 + }, + { + "name": "custom_path_3", + "shape": 7, + "type": "STRING", + "link": 709 + }, + { + "name": "custom_path_4", + "shape": 7, + "type": "STRING", + "link": 710 + } + ], + "outputs": [ + { + "name": "RESULT", + "type": "IMAGE", + "links": [ + 711 + ] + }, + { + "name": "CLIENT", + "type": "APICLIENT", + "links": [ + 712 + ] + }, + { + "name": "PROVIDER", + "type": "STRING", + "links": [ + 713 + ] + }, + { + "name": "SCHEMA", + "type": "TUPLE", + "links": [ + 714 + ] + }, + { + "name": "RENDERED", + "type": "TUPLE", + "links": [ + 715 + ] + }, + { + "name": "RAW_PAYLOAD", + "type": "TUPLE", + "links": [ + 716 + ] + }, + { + "name": "REQUEST_BODY", + "type": "TUPLE", + "links": [ + 717 + ] + }, + { + "name": "API_SCHEMAS", + "type": "TUPLE", + "links": [ + 718 + ] + }, + { + "name": "API_RESULT", + "type": "TUPLE", + "links": [ + 719 + ] + } + ], + "properties": { + "Node name for S&R": "PrimereApiProcessor" + }, + "widgets_values": [ + null, + true, + false, + "FAL", + "Seedance", + 1, + true, + "e:\\!Works\\AI\\AIPICS\\ComfyAPI\\[time(%Y-%m-Week-%W)]", + "None", + true, + true, + true, + "API", + "_", + true, + true, + 1, + false, + "jpg", + 95, + true, + true, + false, + "reference-to-video", + "2.0", + "8", + "720p", + true + ], + "color": "#233", + "bgcolor": "#355" } ], "links": [ @@ -1405,166 +1670,6 @@ 0, "INT" ], - [ - 659, - 9, - 0, - 76, - 0, - "STRING" - ], - [ - 662, - 75, - 0, - 76, - 4, - "IMAGE" - ], - [ - 663, - 15, - 0, - 76, - 7, - "INT" - ], - [ - 664, - 15, - 1, - 76, - 8, - "INT" - ], - [ - 665, - 15, - 3, - 76, - 9, - "STRING" - ], - [ - 666, - 16, - 0, - 76, - 10, - "INT" - ], - [ - 667, - 76, - 0, - 27, - 0, - "IMAGE" - ], - [ - 668, - 76, - 1, - 2, - 0, - "APICLIENT" - ], - [ - 669, - 76, - 2, - 3, - 0, - "STRING" - ], - [ - 670, - 76, - 3, - 4, - 0, - "TUPLE" - ], - [ - 671, - 76, - 4, - 5, - 0, - "TUPLE" - ], - [ - 672, - 76, - 5, - 47, - 0, - "TUPLE" - ], - [ - 673, - 76, - 6, - 6, - 0, - "TUPLE" - ], - [ - 674, - 76, - 7, - 8, - 0, - "TUPLE" - ], - [ - 675, - 76, - 8, - 44, - 0, - "TUPLE" - ], - [ - 678, - 58, - 0, - 76, - 3, - "IMAGE" - ], - [ - 679, - 39, - 0, - 77, - 0, - "IMAGE" - ], - [ - 680, - 38, - 0, - 77, - 1, - "IMAGE" - ], - [ - 681, - 22, - 0, - 77, - 2, - "IMAGE" - ], - [ - 682, - 29, - 0, - 77, - 3, - "IMAGE" - ], [ 683, 28, @@ -1621,14 +1726,6 @@ 10, "IMAGE" ], - [ - 690, - 77, - 0, - 76, - 2, - "IMAGE" - ], [ 691, 77, @@ -1636,19 +1733,227 @@ 42, 0, "IMAGE" + ], + [ + 697, + 83, + 0, + 77, + 0, + "IMAGE" + ], + [ + 698, + 9, + 0, + 84, + 0, + "STRING" + ], + [ + 699, + 77, + 0, + 84, + 2, + "IMAGE" + ], + [ + 700, + 58, + 0, + 84, + 3, + "IMAGE" + ], + [ + 701, + 75, + 0, + 84, + 4, + "IMAGE" + ], + [ + 702, + 78, + 0, + 84, + 6, + "STRING" + ], + [ + 703, + 15, + 0, + 84, + 7, + "INT" + ], + [ + 704, + 15, + 1, + 84, + 8, + "INT" + ], + [ + 705, + 15, + 3, + 84, + 9, + "STRING" + ], + [ + 706, + 16, + 0, + 84, + 10, + "INT" + ], + [ + 707, + 79, + 0, + 84, + 11, + "STRING" + ], + [ + 708, + 80, + 0, + 84, + 12, + "STRING" + ], + [ + 709, + 81, + 0, + 84, + 13, + "STRING" + ], + [ + 710, + 82, + 0, + 84, + 14, + "STRING" + ], + [ + 711, + 84, + 0, + 27, + 0, + "IMAGE" + ], + [ + 712, + 84, + 1, + 2, + 0, + "APICLIENT" + ], + [ + 713, + 84, + 2, + 3, + 0, + "STRING" + ], + [ + 714, + 84, + 3, + 4, + 0, + "TUPLE" + ], + [ + 715, + 84, + 4, + 5, + 0, + "TUPLE" + ], + [ + 716, + 84, + 5, + 47, + 0, + "TUPLE" + ], + [ + 717, + 84, + 6, + 6, + 0, + "TUPLE" + ], + [ + 718, + 84, + 7, + 8, + 0, + "TUPLE" + ], + [ + 719, + 84, + 8, + 44, + 0, + "TUPLE" + ], + [ + 720, + 38, + 0, + 77, + 1, + "IMAGE" + ], + [ + 721, + 39, + 0, + 77, + 2, + "IMAGE" + ], + [ + 722, + 18, + 0, + 77, + 3, + "IMAGE" ] ], "groups": [], "config": {}, "extra": { "ds": { - "scale": 0.5644739300537774, + "scale": 0.620921323059155, "offset": [ - 2315.655835256307, - 1306.1255550018536 + 1729.5454898304179, + 1248.6577006398272 ] }, - "frontendVersion": "1.39.19" + "frontendVersion": "1.42.11" }, "version": 0.4 } \ No newline at end of file diff --git a/components/API/responses/FAL_Seedance.py b/components/API/responses/FAL_Seedance.py new file mode 100644 index 0000000..289601d --- /dev/null +++ b/components/API/responses/FAL_Seedance.py @@ -0,0 +1,23 @@ +from __future__ import annotations + +import json + +from . import response_helper + + +def handle_response(api_result, schema=None): + try: + json_object = json.loads(json.dumps(api_result)) + except (ValueError, TypeError) as exc: + raise RuntimeError(f"Invalid JSON response received: {api_result}") from exc + + video = json_object.get("video") if isinstance(json_object, dict) else None + if not isinstance(video, dict): + raise RuntimeError(f"No 'video' key in Seedance response: {json_object}") + + video_url = video.get("url") + if not video_url: + raise RuntimeError(f"No URL in Seedance video response: {video}") + + video_bytes = response_helper.fetch_url_bytes(video_url) + return ["video_result", video_bytes] diff --git a/front_end/api_schemas.example.json b/front_end/api_schemas.example.json index 63d8c1b..8485063 100644 --- a/front_end/api_schemas.example.json +++ b/front_end/api_schemas.example.json @@ -65,50 +65,6 @@ } } }, - "VEO": { - "provider": "Gemini", - "service": "VEO", - "reference_images_handler": "Gemini_VEO.py", - "import_modules": [ - "from google import genai", - "from google.genai import types" - ], - "possible_parameters": { - "model": ["veo-2.0-generate-001", "veo-3.1-fast-generate-preview", "veo-3.1-generate-preview"], - "aspect_ratio": ["16:9", "16:10", "9:16", "10:16"], - "duration_seconds": [4, 5, 6, 7, 8], - "person_generation": ["allow_adult", "allow_all", "dont_allow"], - "resolution": ["720p", "1080p", "4K"] - }, - "request": { - "method": "SDK", - "endpoint": "client.models.generate_videos", - "sdk_call": { - "args": [], - "kwargs": { - "model": "{{model}}", - "prompt": "{{prompt}}", - "image": "{{first_image}}", - "lastFrame": "{{last_image}}", - "referenceImages": "{{reference_images}}", - "video": "{{reference_video}}", - "config": { - "$call": "types.GenerateVideosConfig", - "$args": [], - "$kwargs": { - "aspectRatio": "{{aspect_ratio}}", - "number_of_videos": "{{batch}}", - "resolution": "{{config_resolution}}", - "durationSeconds": "{{duration_seconds}}", - "personGeneration": "{{person_generation}}", - "reference_images": "{{reference_images}}", - "negative_prompt": "{{negative_prompt}}" - } - } - } - } - } - }, "Imagen": { "provider": "Gemini", "service": "Imagen", @@ -149,134 +105,6 @@ } } }, - "FAL": { - "Seedream": { - "provider": "FAL", - "service": "Seedream", - "response_handler": "FAL_Image.py", - "import_modules": [ - "import fal_client" - ], - "possible_parameters": { - "enable_safety_checker": [false, true], - "with_logs": [false, true], - "enhance_prompt_mode": ["standard", "fast"], - "model_type": ["text-to-image", "edit"], - "version": ["v4.5", "v5/lite"] - }, - "request_exclusions": [ - { - "when": {"path": "model_type", "equals": "edit"}, - "remove": ["enhance_prompt_mode"] - }, - { - "when": {"path": "model_type", "equals": "text-to-image"}, - "remove": ["reference_images", "image_urls"] - } - ], - "request": { - "method": "SDK", - "endpoint": "fal_client.submit", - "sdk_call": { - "args": [ - "fal-ai/bytedance/seedream/{{version}}/{{model_type}}" - ], - "kwargs": { - "arguments": { - "prompt": "{{prompt}}", - "image_urls": "{{reference_images}}", - "image_size": { - "width": "{{width}}", - "height": "{{height}}" - }, - "num_images": "{{batch}}", - "max_images": 1, - "enable_safety_checker": "{{enable_safety_checker}}", - "enhance_prompt_mode": "{{enhance_prompt_mode}}", - "seed": "{{seed}}", - "with_logs": "{{with_logs}}" - } - } - } - } - }, - "Kling": { - "provider": "FAL", - "service": "Kling", - "response_handler": "FAL_Kling.py", - "reference_images_handler": "FAL_Kling.py", - "import_modules": [ - "import fal_client" - ], - "possible_parameters": { - "aspect_ratio": ["16:9", "9:16", "1:1"], - "duration": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], - "generate_audio": [false, true], - "with_logs": [false, true], - "model_type": ["text-to-video", "image-to-video"], - "version": ["v3/pro", "v3/standard", "o3/pro", "o3/standard"], - "cfg_scale": "FLOAT" - }, - "request_exclusions": [ - { - "when": {"path": "version", "equals": "v3/pro"}, - "remove": ["image_url"] - }, - { - "when": {"path": "version", "equals": "v3/standard"}, - "remove": ["image_url"] - }, - { - "when": {"path": "version", "equals": "o3/standard"}, - "remove": ["negative_prompt", "cfg_scale", "start_image_url", "elements", "aspect_ratio"] - }, - { - "when": {"path": "version", "equals": "o3/pro"}, - "remove": ["negative_prompt", "cfg_scale", "start_image_url", "elements", "aspect_ratio"] - }, - { - "when": {"path": "model_type", "equals": "text-to-video"}, - "remove": ["multi_prompt", "start_image_url", "image_url", "elements"] - } - ], - "parameter_constraints": { - "cfg_scale": {"max": 1.0} - }, - "request": { - "method": "SDK", - "endpoint": "fal_client.subscribe", - "sdk_call": { - "args": [ - "fal-ai/kling-video/{{version}}/{{model_type}}" - ], - "kwargs": { - "arguments": { - "prompt": "{{prompt}}", - "negative_prompt": "{{negative_prompt}}", - "multi_prompt": "{{multi_prompt}}", - "cfg_scale": "{{cfg_scale}}", - "start_image_url": "{{first_image}}", - "image_url": "{{first_image}}", - "end_image_url": "{{last_image}}", - "elements": [ - { - "reference_image_urls": "{{reference_images}}", - "frontal_image_url": "{{frontal_image}}" - }, - { - "video_url": "{{reference_video}}" - } - ], - "duration": "{{duration}}", - "aspect_ratio": "{{aspect_ratio}}", - "generate_audio": "{{generate_audio}}", - "with_logs": "{{with_logs}}" - } - } - } - } - } - }, "BlackForest": { "Flux": { "provider": "BlackForest", diff --git a/front_end/title_manager.js b/front_end/title_manager.js index 3135895..8d8707d 100644 --- a/front_end/title_manager.js +++ b/front_end/title_manager.js @@ -2,7 +2,7 @@ import { app } from "/scripts/app.js"; // Add node names here to enable backend-driven title separators on those nodes. const TITLE_MANAGED_NODES = [ - "PrimereRasterix", "PrimereModelControl", "PrimereMetaSave", "PrimereRasterixLens", "PrimereMetaHandler", "PrimereCLIPEncoder" + "PrimereRasterix", "PrimereModelControl", "PrimereMetaSave", "PrimereRasterixLens", "PrimereMetaHandler", "PrimereCLIPEncoder", "PrimereApiProcessor" ]; const titleConfigCache = {}; diff --git a/terminal_helpers/result.json b/terminal_helpers/result.json index fda5e57..a048ff1 100644 --- a/terminal_helpers/result.json +++ b/terminal_helpers/result.json @@ -1,57 +1,53 @@ { - "Gemini": { - "Nanobanana_2": { - "provider": "Gemini", - "service": "Nanobanana_2", - "response_handler": "Gemini_Nanobanana_2.py", - "reference_images_handler": "Gemini.py", + "FAL": { + "Seedance": { + "provider": "FAL", + "service": "Seedance", + "response_handler": "FAL_Seedance.py", + "reference_images_handler": "FAL.py", "import_modules": [ "import your_provider_sdk", "from your_provider_sdk import types" ], "possible_parameters": { - "aspect_ratio": [ - "fake_aspect_ratio_value_1", - "fake_aspect_ratio_value_2" + "audio_urls": [ + "fake_audio_urls_value_1", + "fake_audio_urls_value_2" ], - "resolution": [ - "1K", - "2K", - "4K" + "reference_image": [ + "fake_reference_image_value_1", + "fake_reference_image_value_2" + ], + "aspect_ratio": ["auto", "21:9", "16:9", "4:3", "1:1", "3:4", "9:16"], + "duration": ["auto", 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], + "resolution": ["480p", "720p"], + "video_urls": [ + "fake_video_urls_value_1", + "fake_video_urls_value_2" + ], + "with_logs": [ + "fake_with_logs_value_1", + "fake_with_logs_value_2" ] }, "request": { "method": "SDK", - "endpoint": "client.models.generate_content", + "endpoint": "fal_client.subscribe", "sdk_call": { - "args": [], + "args": [ + "bytedance/seedance-2.0/fast/reference-to-video" + ], "kwargs": { - "model": "gemini-3.1-flash-image-preview", - "contents": "{{prompt}}", - "config": { - "$call": "types.GenerateContentConfig", - "$args": [], - "$kwargs": { - "response_modalities": [ - "IMAGE" - ], - "image_config": { - "$call": "types.ImageConfig", - "$args": [], - "$kwargs": { - "aspect_ratio": "{{aspect_ratio}}", - "image_size": "{{resolution}}" - } - }, - "thinking_config": { - "$call": "types.ThinkingConfig", - "$args": [], - "$kwargs": { - "thinking_level": "High", - "include_thoughts": true - } - } - } + "arguments": { + "prompt": "{{prompt}}", + "image_urls": "{{reference_image}}", + "video_urls": "{{video_urls}}", + "audio_urls": "{{audio_urls}}", + "resolution": "{{resolution}}", + "seed": "{{seed}}", + "duration": "{{duration}}", + "aspect_ratio": "{{aspect_ratio}}", + "with_logs": "{{with_logs}}" } } } diff --git a/terminal_helpers/snippet.py b/terminal_helpers/snippet.py index 0ac5a25..eb58bbf 100644 --- a/terminal_helpers/snippet.py +++ b/terminal_helpers/snippet.py @@ -1,15 +1,13 @@ -response = client.models.generate_content( - model="gemini-3.1-flash-image-preview", - contents=prompt, - config=types.GenerateContentConfig( - response_modalities=['IMAGE'], - image_config=types.ImageConfig( - aspect_ratio=aspect_ratio, - image_size=resolution - ), - thinking_config=types.ThinkingConfig( - thinking_level="High", - include_thoughts=True - ), - ) +result = fal_client.subscribe("bytedance/seedance-2.0/fast/reference-to-video", + arguments={ + "prompt": prompt, + "image_urls": reference_image, + "video_urls": video_urls, + "audio_urls": audio_urls, + "resolution": resolution, + "seed": seed, + "duration": "auto", + "aspect_ratio": "auto", + "with_logs": with_logs + } ) \ No newline at end of file