From e5d7b2b4c276ab0d91dc2ab1364cc9e796ad5baf Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Thu, 20 Nov 2025 22:28:53 -0500 Subject: [PATCH] feat: Add support for video age detection with structured data output --- modules/videoTranscription.py | 22 +++++++++++++++++----- workflows/Runware_Video_Age_Detection.json | 2 +- workflows/Runware_Video_Transcription.json | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/modules/videoTranscription.py b/modules/videoTranscription.py index e7eedd7..9b7bbd7 100644 --- a/modules/videoTranscription.py +++ b/modules/videoTranscription.py @@ -113,13 +113,25 @@ class videoTranscription: status = data["status"] if status == "success": - # Check if transcription is complete + # Handle both text (video captioning) and structuredData (age detection) outputs + outputText = None + if "text" in data: - transcriptionText = data["text"] - + # Video captioning result + outputText = data["text"] + elif "structuredData" in data: + # Age detection result - format as readable text + structuredData = data["structuredData"] + ageGroup = structuredData.get("ageGroup", "Unknown") + confidence = structuredData.get("confidence", 0.0) + outputText = f"Age Group: {ageGroup}\nConfidence: {confidence:.2%}" + + if outputText: # Send transcription result - rwUtils.sendVideoTranscription(transcriptionText, kwargs.get("node_id")) - return (transcriptionText,) + rwUtils.sendVideoTranscription(outputText, kwargs.get("node_id")) + return (outputText,) + else: + raise Exception("No valid output (text or structuredData) in successful response") elif status == "processing": # Continue polling pass diff --git a/workflows/Runware_Video_Age_Detection.json b/workflows/Runware_Video_Age_Detection.json index a152a66..1230135 100644 --- a/workflows/Runware_Video_Age_Detection.json +++ b/workflows/Runware_Video_Age_Detection.json @@ -1 +1 @@ -{"id":"df246f14-f1cb-4379-91af-5185b0c663d8","revision":0,"last_node_id":4,"last_link_id":2,"nodes":[{"id":4,"type":"Runware Media Upload","pos":[-151.37985229492188,276.1902160644531],"size":[270,58],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":1},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056c15a1b72b1555184d0447562c095797825d6e","Node name for S&R":"Runware Media Upload"},"widgets_values":["f4d54ced-fe68-45d5-9cb8-ba7b29729fe9"],"bgcolor":"#5345bf"},{"id":3,"type":"LoadVideo","pos":[-436.6539001464844,430.0327453613281],"size":[274.080078125,442.0882263183594],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"file","name":"file","type":"COMBO","widget":{"name":"file"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadVideo"},"widgets_values":["b395d4bb-364c-44b5-91ba-f768e5ff3e98.mp4","image"]},{"id":1,"type":"Runware Video Transcription","pos":[-75.60359191894531,496.2238464355469],"size":[400,200],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Always Retranscribe","name":"Always Retranscribe","type":"BOOLEAN","widget":{"name":"Always Retranscribe"},"link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":null},{"localized_name":"video","name":"video","type":"STRING","widget":{"name":"video"},"link":2},{"localized_name":"model","name":"model","type":"STRING","widget":{"name":"model"},"link":null}],"outputs":[{"localized_name":"Video Transcription","name":"Video Transcription","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056c15a1b72b1555184d0447562c095797825d6e","Node name for S&R":"Runware Video Transcription"},"widgets_values":[false,"[0] (0s-1s): A man with curly brown hair and closed eyes is shown against a plain gray background. He is wearing a dark blue t-shirt.\n[1] (1s-3s): The man opens his eyes and begins to speak, his mouth slightly open.\n[2] (3s-5s): He continues to speak, his expression animated.\n[3] (5s-7s): The man purses his lips as if about to speak or make a sound.\n[4] (7s-9s): He speaks again, his mouth open and teeth visible.\n[5] (9s-10s): The man's expression is neutral as he looks forward.\n[6] (10s-11s): He blinks slowly, his eyes partially closed.\n[7] (11s-13s): The man sticks out his tongue slightly and speaks.\n[8] (13s-14s): He speaks with his mouth open, showing his teeth.","","memories:2@1"]}],"links":[[1,3,0,4,0,"VIDEO,AUDIO"],[2,4,0,1,2,"STRING"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.118153876706717,"offset":[993.4996947608385,-128.5350901285807]}},"version":0.4} \ No newline at end of file +{"id":"df246f14-f1cb-4379-91af-5185b0c663d8","revision":0,"last_node_id":5,"last_link_id":4,"nodes":[{"id":4,"type":"Runware Media Upload","pos":[-151.37985229492188,276.1902160644531],"size":[270,58],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":1},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[4]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056c15a1b72b1555184d0447562c095797825d6e","Node name for S&R":"Runware Media Upload"},"widgets_values":["7c9566ba-d699-4fa0-b420-f46d33204f66"],"bgcolor":"#5345bf"},{"id":3,"type":"LoadVideo","pos":[-454.52960205078125,302.2899475097656],"size":[274.080078125,442.0882263183594],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"file","name":"file","type":"COMBO","widget":{"name":"file"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadVideo"},"widgets_values":["b395d4bb-364c-44b5-91ba-f768e5ff3e98.mp4","image"]},{"id":5,"type":"Runware Video Transcription","pos":[-137.76495361328125,407.28509521484375],"size":[398.5390930175781,293.3546142578125],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Always Retranscribe","name":"Always Retranscribe","type":"BOOLEAN","widget":{"name":"Always Retranscribe"},"link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":null},{"localized_name":"video","name":"video","type":"STRING","widget":{"name":"video"},"link":4},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null}],"outputs":[{"localized_name":"Video Caption","name":"Video Caption","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"b4dbbd256edfa2e3a422170f9a8dff150087d8a9","Node name for S&R":"Runware Video Transcription"},"widgets_values":[false,"Age Group: 21-44\nConfidence: 90.00%","","Memories Age Detection"],"bgcolor":"#5345bf"}],"links":[[1,3,0,4,0,"VIDEO,AUDIO"],[4,4,0,5,2,"STRING"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.7593693220766519,"offset":[988.6230578096878,-128.53509012858075]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Video_Transcription.json b/workflows/Runware_Video_Transcription.json index 10996f4..05b6283 100644 --- a/workflows/Runware_Video_Transcription.json +++ b/workflows/Runware_Video_Transcription.json @@ -1 +1 @@ -{"id":"df246f14-f1cb-4379-91af-5185b0c663d8","revision":0,"last_node_id":5,"last_link_id":3,"nodes":[{"id":4,"type":"Runware Media Upload","pos":[-151.37985229492188,276.1902160644531],"size":[270,58],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":1},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[3]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056c15a1b72b1555184d0447562c095797825d6e","Node name for S&R":"Runware Media Upload"},"widgets_values":["1ba124eb-81aa-44f6-ab7c-cfa043065738"],"bgcolor":"#5345bf"},{"id":3,"type":"LoadVideo","pos":[-438.6059875488281,321.4447326660156],"size":[274.080078125,442.0882263183594],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"file","name":"file","type":"COMBO","widget":{"name":"file"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadVideo"},"widgets_values":["backgroundRemoval.mp4","image"]},{"id":5,"type":"Runware Video Transcription","pos":[-123.58058166503906,383.5848083496094],"size":[400,200],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Always Retranscribe","name":"Always Retranscribe","type":"BOOLEAN","widget":{"name":"Always Retranscribe"},"link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":null},{"localized_name":"video","name":"video","type":"STRING","widget":{"name":"video"},"link":3},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null}],"outputs":[{"localized_name":"Video Caption","name":"Video Caption","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Transcription"},"widgets_values":[false,"","","Memories Age Detection"],"bgcolor":"#5345bf"}],"links":[[1,3,0,4,0,"VIDEO,AUDIO"],[3,4,0,5,2,"STRING"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8264462809917354,"offset":[793.6275234675816,-100.02884140963462]}},"version":0.4} \ No newline at end of file +{"id":"df246f14-f1cb-4379-91af-5185b0c663d8","revision":0,"last_node_id":5,"last_link_id":3,"nodes":[{"id":4,"type":"Runware Media Upload","pos":[-151.37985229492188,276.1902160644531],"size":[270,58],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":1},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[3]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056c15a1b72b1555184d0447562c095797825d6e","Node name for S&R":"Runware Media Upload"},"widgets_values":["32633b01-1a2c-4d01-9511-43552dfce977"],"bgcolor":"#5345bf"},{"id":3,"type":"LoadVideo","pos":[-438.6059875488281,321.4447326660156],"size":[274.080078125,442.0882263183594],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"file","name":"file","type":"COMBO","widget":{"name":"file"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadVideo"},"widgets_values":["backgroundRemoval.mp4","image"]},{"id":5,"type":"Runware Video Transcription","pos":[-123.58058166503906,383.5848083496094],"size":[400,200],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Always Retranscribe","name":"Always Retranscribe","type":"BOOLEAN","widget":{"name":"Always Retranscribe"},"link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":null},{"localized_name":"video","name":"video","type":"STRING","widget":{"name":"video"},"link":3},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null}],"outputs":[{"localized_name":"Video Caption","name":"Video Caption","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Transcription"},"widgets_values":[false,"[0] (0s-7s): A young girl with braided hair and large, expressive eyes smiles at the camera. She wears a white tank top and a gold chain.","","Memories Video Captioning"],"bgcolor":"#5345bf"}],"links":[[1,3,0,4,0,"VIDEO,AUDIO"],[3,4,0,5,2,"STRING"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8264462809917354,"offset":[793.6275234675816,-100.02884140963462]}},"version":0.4} \ No newline at end of file