- StringToolsConcatList, StringToolsRandomChoiceList, StringToolsBalancedChoiceList を新規実装 - StringToolsBalancedChoice/List の INPUT_IS_LIST 対応(hidden入力のアンラップ処理) - get_node関数で extra_pnginfo/unique_id がリストの場合のアンラップ処理を追加 - StringToolsBalancedChoice に weights フォールバック(空/不一致時に均等配分)を追加 - calculate_weights_from_prompt によるサブグラフ内ノードの重み計算対応 - テスト内の出力ノードを ComfyUI コアの PreviewAny に統一 - Convert to Subgraph を使用したサブグラフ E2E テストを追加 - 全5テスト PASS 確認
ComfyUI String Tools
これは ComfyUI 用のカスタムノードです。
単純な文字列ノードである StringToolsString ノードと複数行の文字列ノードである StringToolsText、
複数のテキストを結合する StringToolsConcat ノードと、複数のテキストからランダムにひとつを選択する StringToolsRandomChoice ノードを提供します。
なぜ単純なテキストノードをこのカスタムノードで提供しているのか
StringToolsConcat ノードと StringToolsRandomChoice ノードは文字列を受け付けますが、現状 PrimitiveNode は受け付けられません。
そこで単純な文字列ノードである StringToolsString と StringToolsText ノードを提供しています。
機能
StringToolsSeed
StringToolsRandomChoice と StringToolsBalancedChoice では seed に PrimitiveNode を受け付けていないため、seed の生成に使用するノードです。
StringToolsConcat
separator で text_* を結合します。
これらの入力はWidgetに変更することができません。
StringToolsRandomChoice
seed で text_* の中からひとつ選択します。
これらの入力はWidgetに変更することができません。
StringToolsBalancedChoice
seed で text_* の中からひとつ選択します。
これらの入力はWidgetに変更することができません。
StringToolsRandomChoice との違いは重み付けにあります。
StringToolsBalancedChoice の入力のどこかに StringToolsRandomChoice か StringToolsBalancedChoice があった場合、その有効な入力数に応じて重み付けを行い、有効な入力数が多いほど選択されやすくなります。