From 0daa37e1c36a2e9f0016e03fe88e2b9f447b5aeb Mon Sep 17 00:00:00 2001 From: sakura1bgx Date: Sat, 8 Nov 2025 01:57:47 +0900 Subject: [PATCH] Update flipstreamviewer.py - Remove Tagger UI and WD14 functions. - Remove wd14exc option from FlipStreamViewer - Add FlipStreamButton - Add FlipStreamGetFrame, it can be use with WD14Tagger node. --- flipstreamviewer.py | 152 +++++++++++++++++++++++++------------------- 1 file changed, 86 insertions(+), 66 deletions(-) diff --git a/flipstreamviewer.py b/flipstreamviewer.py index 404d347..dc715a5 100644 --- a/flipstreamviewer.py +++ b/flipstreamviewer.py @@ -31,11 +31,6 @@ try: except: Llama = None -try: - wd14tagger = __import__("comfyui-wd14-tagger").wd14tagger -except: - wd14tagger = None - try: rembg = __import__("comfyui-inspyrenet-rembg") except: @@ -69,14 +64,14 @@ UPDATE_DELAY = 1.0 allowed_ips = ["127.0.0.1"] setparam = {} setstate = {} +setframe_mtime = 0 default_param = {"lora": "", "_capture_offsetX": 0, "_capture_offsetY": 0, "_capture_scale": 100} param = default_param.copy() -state = {"message": "", "message_fontsize": "", "update_and_reload": False, "presetTitle": time.strftime("%Y%m%d-%H%M"), "presetFolder": "", "presetFile": "", "loraRate": "1", "loraRank": "0", "loraMode": "", "loraFolder": "", "loraFile": "", "loraTagOptions": "[]", "loraTag": "", "loraLinkHref": "", "loraPreviewSrc": "", "darker": 0.0, "wd14th": 0.35, "wd14cth": 0.85} +state = {"message": "", "message_fontsize": "", "update_and_reload": False, "presetTitle": time.strftime("%Y%m%d-%H%M"), "presetFolder": "", "presetFile": "", "loraRate": "1", "loraRank": "0", "loraMode": "", "loraFolder": "", "loraFile": "", "loraTagOptions": "[]", "loraTag": "", "loraLinkHref": "", "loraPreviewSrc": "", "darker": 0.0} frame_updating = None frame_buffer = [] frame_mtime = 0 frame_fps = 8 -exclude_tags = "" class AnyType(str): def __ne__(self, __value: object) -> bool: @@ -242,9 +237,7 @@ div.row { width: 80%; } -#darkerRange, -#wd14thRange, -#wd14cthRange { +#darkerRange { width: 50%; } @@ -314,9 +307,7 @@ function getStateAsJson(force_state={}) { const loraLinkHref = document.getElementById("loraLink").getAttribute("href"); const loraPreviewSrc = document.getElementById("loraPreview").getAttribute("src"); const darker = parseFloat(document.getElementById("darkerRange").value); - const wd14th = parseFloat(document.getElementById("wd14thRange").value); - const wd14cth = parseFloat(document.getElementById("wd14cthRange").value); - var res = { presetTitle: presetTitle, presetFolder: presetFolder, presetFile: presetFile, loraRate: loraRate, loraRank: loraRank, loraFolder: loraFolder, loraFile: loraFile, loraTagOptions: loraTagOptions, loraTag: loraTag, loraLinkHref: loraLinkHref, loraPreviewSrc: loraPreviewSrc, loraTagOptions: loraTagOptions, darker: darker, wd14th: wd14th, wd14cth: wd14cth }; + var res = { presetTitle: presetTitle, presetFolder: presetFolder, presetFile: presetFile, loraRate: loraRate, loraRank: loraRank, loraFolder: loraFolder, loraFile: loraFile, loraTagOptions: loraTagOptions, loraTag: loraTag, loraLinkHref: loraLinkHref, loraPreviewSrc: loraPreviewSrc, loraTagOptions: loraTagOptions, darker: darker }; document.querySelectorAll('.FlipStreamFolderSelect').forEach(x => res[x.name] = x.value); res = Object.assign(res, force_state); return res; @@ -667,17 +658,6 @@ function randomTag() { } } -async function addWD14Tag() { - const json = await (await fetch("/flipstreamviewer/get_wd14tag", { - method: "POST", - body: JSON.stringify(getStateAsJson()), - headers: {"Content-Type": "application/json"} - })).json(); - if (json.tags != "") { - loraInput.value = json.tags + "\n\n" + loraInput.value; - } -} - function clearLoraInput() { document.getElementById("loraInput").value = ""; } @@ -1055,6 +1035,18 @@ async def viewer(request): block[f"{title}_{section}"] = f"""
{section}
""" + def add_button(title, update, capture, hook): + block[f"{title}"] = f""" +
""" + if update: + block[f"{title}"] += f""" + """ + if capture: + block[f"{title}"] += f""" + """ + block[f"{title}"] += f""" +
""" + def add_slider(title, label, default, min, max, step): if not label.isidentifier(): raise RuntimeError(f"{title}: label must contain only valid identifier characters.") @@ -1201,6 +1193,8 @@ async def viewer(request): inputs = node["inputs"] if class_type == "FlipStreamSection": add_section(title, **inputs) + if class_type == "FlipStreamButton": + add_button(title, **inputs) if class_type == "FlipStreamSlider": add_slider(title, **inputs) if class_type == "FlipStreamTextBox": @@ -1219,9 +1213,6 @@ async def viewer(request): text_html = f"""{HEAD}
-
- -
{"".join([x[1] for x in sorted(block.items())])}
@@ -1229,25 +1220,12 @@ async def viewer(request):
Status
- +
Darker
{state["darker"]}drk
-
Tagger
-
- - -
-
- - {state["wd14th"]}wth -
-
- - {state["wd14cth"]}cth -
Preset