Files
2026-04-16 15:25:21 +03:00

62 lines
1.6 KiB
Python

from __future__ import annotations
import re
from typing import Dict, Tuple
class FetchMeFilter:
MAX_CODEX = 5
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"text": ("STRING", {"forceInput": True}),
},
"optional": {
f"codex_{idx}": ("DICT",)
for idx in range(1, cls.MAX_CODEX + 1)
},
}
RETURN_TYPES = ("STRING",)
RETURN_NAMES = ("text",)
FUNCTION = "run"
CATEGORY = "FetchMe/Text"
def _merge_codex(self, out: Dict[str, str], value: Dict | None) -> None:
if value is None or not isinstance(value, dict):
return
out.update(value)
def run(
self,
text: str,
codex_1: Dict | None = None,
codex_2: Dict | None = None,
codex_3: Dict | None = None,
codex_4: Dict | None = None,
codex_5: Dict | None = None,
) -> Tuple[str]:
out = "" if text is None else str(text)
merged: Dict[str, str] = {}
self._merge_codex(merged, codex_1)
self._merge_codex(merged, codex_2)
self._merge_codex(merged, codex_3)
self._merge_codex(merged, codex_4)
self._merge_codex(merged, codex_5)
for key, value in merged.items():
token = str(key)
if token == "":
continue
replacement = "" if value is None else str(value)
pattern = re.compile(re.escape(token), re.IGNORECASE)
out = pattern.sub(replacement, out)
return (out,)
# Backward-compatible alias.
fetch_filter = FetchMeFilter