0.66
2
.gitignore
vendored
@@ -6,3 +6,5 @@ web/js/clear_vram.js
|
|||||||
speakers
|
speakers
|
||||||
*.text
|
*.text
|
||||||
web/js/*.txt
|
web/js/*.txt
|
||||||
|
ScriptsPerso/
|
||||||
|
civitai/NSFW_*
|
||||||
147
API_civitai.py
@@ -39,7 +39,9 @@ image_folders = {
|
|||||||
"lora_sdxl_1.0": os.path.join(civitai_base_path, "lora_sdxl_1.0"),
|
"lora_sdxl_1.0": os.path.join(civitai_base_path, "lora_sdxl_1.0"),
|
||||||
"lora_sd_1.5": os.path.join(civitai_base_path, "lora_sd_1.5"),
|
"lora_sd_1.5": os.path.join(civitai_base_path, "lora_sd_1.5"),
|
||||||
"lora_pony": os.path.join(civitai_base_path, "lora_pony"),
|
"lora_pony": os.path.join(civitai_base_path, "lora_pony"),
|
||||||
"lora_flux.1_d": os.path.join(civitai_base_path, "lora_flux.1_d")
|
"lora_flux.1_d": os.path.join(civitai_base_path, "lora_flux.1_d"),
|
||||||
|
"lora_hunyuan_video": os.path.join(civitai_base_path, "lora_hunyuan_video"),
|
||||||
|
"NSFW_lora_hunyuan_video": os.path.join(civitai_base_path, "NSFW_lora_hunyuan_video")
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add folder paths for each image folder
|
# Add folder paths for each image folder
|
||||||
@@ -1653,3 +1655,146 @@ class CivitAILoraSelectorPONY:
|
|||||||
m.update(f.read())
|
m.update(f.read())
|
||||||
m.update(image.encode('utf-8'))
|
m.update(image.encode('utf-8'))
|
||||||
return m.digest().hex()
|
return m.digest().hex()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class CivitAILoraSelectorHunyuan:
|
||||||
|
@classmethod
|
||||||
|
def INPUT_TYPES(s):
|
||||||
|
image_extensions = ('.png', '.jpg', '.jpeg', '.gif', '.webp', '.bmp')
|
||||||
|
|
||||||
|
# Try NSFW folder first
|
||||||
|
nsfw_files = [f"NSFW_lora_hunyuan_video/{f}" for f in folder_paths.get_filename_list("NSFW_lora_hunyuan_video")
|
||||||
|
if f.lower().endswith(image_extensions)]
|
||||||
|
|
||||||
|
# If NSFW folder is empty or doesn't exist, try regular folder
|
||||||
|
if not nsfw_files:
|
||||||
|
files = [f"lora_hunyuan_video/{f}" for f in folder_paths.get_filename_list("lora_hunyuan_video")
|
||||||
|
if f.lower().endswith(image_extensions)]
|
||||||
|
else:
|
||||||
|
files = nsfw_files
|
||||||
|
|
||||||
|
if not files:
|
||||||
|
files = ["none"]
|
||||||
|
|
||||||
|
|
||||||
|
return {
|
||||||
|
"required": {
|
||||||
|
"image": (sorted(files), {"image_upload": True}),
|
||||||
|
"model": ("MODEL",),
|
||||||
|
"clip": ("CLIP",),
|
||||||
|
"strength_model": ("FLOAT", {"default": 1.0, "min": -20.0, "max": 20.0, "step": 0.01}),
|
||||||
|
"strength_clip": ("FLOAT", {"default": 1.0, "min": -20.0, "max": 20.0, "step": 0.01}),
|
||||||
|
"civitai_token": ("STRING", {"default": ""})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_TYPES = ("MODEL", "CLIP", "STRING", "STRING", "STRING")
|
||||||
|
RETURN_NAMES = ("model", "clip", "name", "civitai_url", "trigger_words")
|
||||||
|
FUNCTION = "load_lora"
|
||||||
|
CATEGORY = "Bjornulf"
|
||||||
|
|
||||||
|
def load_lora(self, image, model, clip, strength_model, strength_clip, civitai_token):
|
||||||
|
def download_file(url, destination_path, lora_name, api_token=None):
|
||||||
|
filename = f"{lora_name}.safetensors"
|
||||||
|
file_path = os.path.join(destination_path, filename)
|
||||||
|
|
||||||
|
headers = {}
|
||||||
|
if api_token:
|
||||||
|
headers['Authorization'] = f'Bearer {api_token}'
|
||||||
|
|
||||||
|
try:
|
||||||
|
print(f"Downloading from: {url}")
|
||||||
|
response = requests.get(url, headers=headers, stream=True)
|
||||||
|
response.raise_for_status()
|
||||||
|
|
||||||
|
file_size = int(response.headers.get('content-length', 0))
|
||||||
|
block_size = 8192
|
||||||
|
downloaded = 0
|
||||||
|
|
||||||
|
with open(file_path, 'wb') as f:
|
||||||
|
for chunk in response.iter_content(chunk_size=block_size):
|
||||||
|
if chunk:
|
||||||
|
f.write(chunk)
|
||||||
|
downloaded += len(chunk)
|
||||||
|
|
||||||
|
if file_size > 0:
|
||||||
|
progress = int(50 * downloaded / file_size)
|
||||||
|
bars = '=' * progress + '-' * (50 - progress)
|
||||||
|
percent = (downloaded / file_size) * 100
|
||||||
|
print(f'\rProgress: [{bars}] {percent:.1f}%', end='')
|
||||||
|
|
||||||
|
print(f"\nFile downloaded successfully to: {file_path}")
|
||||||
|
return file_path
|
||||||
|
|
||||||
|
except requests.exceptions.RequestException as e:
|
||||||
|
print(f"Error downloading file: {e}")
|
||||||
|
raise
|
||||||
|
|
||||||
|
if image == "none":
|
||||||
|
raise ValueError("No image selected")
|
||||||
|
|
||||||
|
# Try loading NSFW JSON first, fall back to regular JSON if not found
|
||||||
|
nsfw_json_path = os.path.join(parsed_models_path, 'NSFW_parsed_lora_hunyuan_video_loras.json')
|
||||||
|
regular_json_path = os.path.join(parsed_models_path, 'parsed_lora_hunyuan_video_loras.json')
|
||||||
|
|
||||||
|
json_path = nsfw_json_path if os.path.exists(nsfw_json_path) else regular_json_path
|
||||||
|
hunYuan = "hunyuan_video"
|
||||||
|
|
||||||
|
with open(json_path, 'r') as f:
|
||||||
|
loras_info = json.load(f)
|
||||||
|
|
||||||
|
image_name = os.path.basename(image)
|
||||||
|
lora_info = next((lora for lora in loras_info
|
||||||
|
if os.path.basename(lora['image_path']) == image_name), None)
|
||||||
|
|
||||||
|
if not lora_info:
|
||||||
|
raise ValueError(f"No LoRA information found for image: {image_name}")
|
||||||
|
|
||||||
|
lora_dir = os.path.join(folder_paths.models_dir, "loras", "Bjornulf_civitAI", hunYuan)
|
||||||
|
os.makedirs(lora_dir, exist_ok=True)
|
||||||
|
|
||||||
|
lora_filename = f"{lora_info['name']}.safetensors"
|
||||||
|
full_lora_path = os.path.join(lora_dir, lora_filename)
|
||||||
|
|
||||||
|
if not os.path.exists(full_lora_path):
|
||||||
|
print(f"Downloading LoRA {lora_info['name']}...")
|
||||||
|
|
||||||
|
download_url = lora_info['download_url']
|
||||||
|
if civitai_token:
|
||||||
|
download_url += f"?token={civitai_token}" if '?' not in download_url else f"&token={civitai_token}"
|
||||||
|
|
||||||
|
try:
|
||||||
|
download_file(download_url, lora_dir, lora_info['name'], civitai_token)
|
||||||
|
except Exception as e:
|
||||||
|
raise ValueError(f"Failed to download LoRA: {e}")
|
||||||
|
|
||||||
|
relative_lora_path = os.path.join("Bjornulf_civitAI", hunYuan, lora_filename)
|
||||||
|
|
||||||
|
try:
|
||||||
|
lora_loader = nodes.LoraLoader()
|
||||||
|
model_lora, clip_lora = lora_loader.load_lora(model=model,
|
||||||
|
clip=clip,
|
||||||
|
lora_name=relative_lora_path,
|
||||||
|
strength_model=strength_model,
|
||||||
|
strength_clip=strength_clip)
|
||||||
|
except Exception as e:
|
||||||
|
raise ValueError(f"Failed to load LoRA: {e}")
|
||||||
|
|
||||||
|
trained_words_str = ", ".join(lora_info.get('trained_words', []))
|
||||||
|
|
||||||
|
return (model_lora, clip_lora, lora_info['name'], f"https://civitai.com/models/{lora_info['lora_id']}", trained_words_str)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def IS_CHANGED(s, image):
|
||||||
|
if image == "none":
|
||||||
|
return ""
|
||||||
|
image_path = os.path.join(civitai_base_path, image)
|
||||||
|
if not os.path.exists(image_path):
|
||||||
|
return ""
|
||||||
|
|
||||||
|
m = hashlib.sha256()
|
||||||
|
with open(image_path, 'rb') as f:
|
||||||
|
m.update(f.read())
|
||||||
|
m.update(image.encode('utf-8'))
|
||||||
|
return m.digest().hex()
|
||||||
45
README.md
@@ -1,6 +1,6 @@
|
|||||||
# 🔗 Comfyui : Bjornulf_custom_nodes v0.65 🔗
|
# 🔗 Comfyui : Bjornulf_custom_nodes v0.66 🔗
|
||||||
|
|
||||||
A list of 116 custom nodes for Comfyui : Display, manipulate, create and edit text, images, videos, loras, generate characters and more.
|
A list of 119 custom nodes for Comfyui : Display, manipulate, create and edit text, images, videos, loras, generate characters and more.
|
||||||
You can manage looping operations, generate randomized content, trigger logical conditions, pause and manually control your workflows and even work with external AI tools, like Ollama or Text To Speech.
|
You can manage looping operations, generate randomized content, trigger logical conditions, pause and manually control your workflows and even work with external AI tools, like Ollama or Text To Speech.
|
||||||
|
|
||||||
# Coffee : ☕☕☕☕☕ 5/5
|
# Coffee : ☕☕☕☕☕ 5/5
|
||||||
@@ -42,6 +42,7 @@ Support me and my work : ❤️❤️❤️ <https://ko-fi.com/bjornulf> ❤️
|
|||||||
`113.` [📝🔪 Text split in 5](#113----text-split-in-5)
|
`113.` [📝🔪 Text split in 5](#113----text-split-in-5)
|
||||||
`115.` [📥 Load Text From Bjornulf Folder](115----load-text-from-bjornulf-folder)
|
`115.` [📥 Load Text From Bjornulf Folder](115----load-text-from-bjornulf-folder)
|
||||||
`116.` [📥 Load Text From Path](#116----load-text-from-path)
|
`116.` [📥 Load Text From Path](#116----load-text-from-path)
|
||||||
|
`117.` [📝👈 Line selector (🎲 Or random)](#)
|
||||||
|
|
||||||
## 🔥 Text Generator 🔥
|
## 🔥 Text Generator 🔥
|
||||||
`81.` [🔥📝 Text Generator 📝🔥](#81----text-generator-)
|
`81.` [🔥📝 Text Generator 📝🔥](#81----text-generator-)
|
||||||
@@ -97,6 +98,7 @@ Support me and my work : ❤️❤️❤️ <https://ko-fi.com/bjornulf> ❤️
|
|||||||
`41.` [🎲 Random Load checkpoint (Model Selector)](#41----random-load-checkpoint-model-selector)
|
`41.` [🎲 Random Load checkpoint (Model Selector)](#41----random-load-checkpoint-model-selector)
|
||||||
`48.` [🔀🎲 Text scrambler (🧑 Character)](#48----text-scrambler--character)
|
`48.` [🔀🎲 Text scrambler (🧑 Character)](#48----text-scrambler--character)
|
||||||
`55.` [🎲👑 Random Lora Selector](#55----random-lora-selector)
|
`55.` [🎲👑 Random Lora Selector](#55----random-lora-selector)
|
||||||
|
`117.` [📝👈 Line selector (🎲 Or random)](#)
|
||||||
|
|
||||||
## 🖼💾 Image Save 💾🖼
|
## 🖼💾 Image Save 💾🖼
|
||||||
`16.` [💾🖼💬 Save image for Bjornulf LobeChat](#16----save-image-for-bjornulf-lobechat-for-my-custom-lobe-chat)
|
`16.` [💾🖼💬 Save image for Bjornulf LobeChat](#16----save-image-for-bjornulf-lobechat-for-my-custom-lobe-chat)
|
||||||
@@ -155,6 +157,7 @@ Support me and my work : ❤️❤️❤️ <https://ko-fi.com/bjornulf> ❤️
|
|||||||
`103.` [📥👑 Load Lora SD1.5 (+Download from CivitAi)](#103----load-lora-sd15-download-from-civitai)
|
`103.` [📥👑 Load Lora SD1.5 (+Download from CivitAi)](#103----load-lora-sd15-download-from-civitai)
|
||||||
`104.` [📥👑 Load Lora SDXL (+Download from CivitAi)](#104----load-lora-sdxl-download-from-civitai)
|
`104.` [📥👑 Load Lora SDXL (+Download from CivitAi)](#104----load-lora-sdxl-download-from-civitai)
|
||||||
`105.` [📥👑 Load Lora Pony (+Download from CivitAi)](#105----load-lora-pony-download-from-civitai)
|
`105.` [📥👑 Load Lora Pony (+Download from CivitAi)](#105----load-lora-pony-download-from-civitai)
|
||||||
|
`119.` [📥👑📹 Load Lora Hunyuan Video (+Download from CivitAi)](#)
|
||||||
|
|
||||||
## 📹 Video 📹
|
## 📹 Video 📹
|
||||||
`20.` [📹 Video Ping Pong](#20----video-ping-pong)
|
`20.` [📹 Video Ping Pong](#20----video-ping-pong)
|
||||||
@@ -171,21 +174,24 @@ Support me and my work : ❤️❤️❤️ <https://ko-fi.com/bjornulf> ❤️
|
|||||||
`77.` [📹🔍 Video details ⚙](#77----video-details-)
|
`77.` [📹🔍 Video details ⚙](#77----video-details-)
|
||||||
`78.` [📹➜📹 Convert Video](#78----convert-video)
|
`78.` [📹➜📹 Convert Video](#78----convert-video)
|
||||||
`79.` [📹🔗 Concat Videos from list](#79----concat-videos-from-list)
|
`79.` [📹🔗 Concat Videos from list](#79----concat-videos-from-list)
|
||||||
|
`119.` [📥👑📹 Load Lora Hunyuan Video (+Download from CivitAi)](#)
|
||||||
|
|
||||||
## 🤖 AI 🤖
|
## 🤖 AI 🤖
|
||||||
`19.` [🦙💬 Ollama Talk](#19----ollama-talk)
|
`19.` [🦙💬 Ollama Talk](#19----ollama-talk)
|
||||||
|
`31.` [📝➜🔊 TTS - Text to Speech](#31----tts---text-to-speech-100-local-any-voice-you-want-any-language)
|
||||||
`62.` [🦙👁 Ollama Vision](#62----ollama-vision)
|
`62.` [🦙👁 Ollama Vision](#62----ollama-vision)
|
||||||
`63.` [🦙 Ollama Configuration ⚙](#63----ollama-configuration-)
|
`63.` [🦙 Ollama Configuration ⚙](#63----ollama-configuration-)
|
||||||
`64.` [🦙 Ollama Job Selector 💼](#64----ollama-job-selector-)
|
`64.` [🦙 Ollama Job Selector 💼](#64----ollama-job-selector-)
|
||||||
`65.` [🦙 Ollama Persona Selector 🧑](#65----ollama-persona-selector-)
|
`65.` [🦙 Ollama Persona Selector 🧑](#65----ollama-persona-selector-)
|
||||||
`31.` [📝➜🔊 TTS - Text to Speech](#31----tts---text-to-speech-100-local-any-voice-you-want-any-language)
|
|
||||||
`66.` [🔊➜📝 STT - Speech to Text](#66----stt---speech-to-text)
|
`66.` [🔊➜📝 STT - Speech to Text](#66----stt---speech-to-text)
|
||||||
|
`118.` [🔊 TTS Configuration ⚙](#118)
|
||||||
|
|
||||||
## 🔊 Audio 🔊
|
## 🔊 Audio 🔊
|
||||||
`31.` [📝➜🔊 TTS - Text to Speech](#31----tts---text-to-speech-100-local-any-voice-you-want-any-language)
|
`31.` [📝➜🔊 TTS - Text to Speech](#31----tts---text-to-speech-100-local-any-voice-you-want-any-language)
|
||||||
`52.` [🔊📹 Audio Video Sync](#52----audio-video-sync)
|
`52.` [🔊📹 Audio Video Sync](#52----audio-video-sync)
|
||||||
`59.` [📹🔊 Combine Video + Audio](#59----combine-video--audio)
|
`59.` [📹🔊 Combine Video + Audio](#59----combine-video--audio)
|
||||||
`66.` [🔊➜📝 STT - Speech to Text](#66----stt---speech-to-text)
|
`66.` [🔊➜📝 STT - Speech to Text](#66----stt---speech-to-text)
|
||||||
|
`118.` [🔊 TTS Configuration ⚙](#118)
|
||||||
|
|
||||||
## 💻 System 💻
|
## 💻 System 💻
|
||||||
`34.` [🧹 Free VRAM hack](#34----free-vram-hack)
|
`34.` [🧹 Free VRAM hack](#34----free-vram-hack)
|
||||||
@@ -353,6 +359,7 @@ cd /where/you/installed/ComfyUI && python main.py
|
|||||||
- **0.63**: delete long file, useless
|
- **0.63**: delete long file, useless
|
||||||
- **0.64**: remove "import wget", added some keywords to text generators.
|
- **0.64**: remove "import wget", added some keywords to text generators.
|
||||||
- **0.65**: ❗Breaking changes : Combine Text inputs are now all optional (PLease remake your nodes, sorry.) Add 6 new nodes : any2int, any2float, load text from folder, load text from path, load lora from path. Also upgraded the Save text node.
|
- **0.65**: ❗Breaking changes : Combine Text inputs are now all optional (PLease remake your nodes, sorry.) Add 6 new nodes : any2int, any2float, load text from folder, load text from path, load lora from path. Also upgraded the Save text node.
|
||||||
|
- **0.66**: Add lora hunyuan CIVIT ai + download, add TTS configuration node, edit requirements.txt
|
||||||
|
|
||||||
# 📝 Nodes descriptions
|
# 📝 Nodes descriptions
|
||||||
|
|
||||||
@@ -1641,3 +1648,35 @@ Just give the path of the file, it will recover its content.
|
|||||||
If you want, with `Load Text From Path` you can also recover the elements in "Bjornulf/Text" by just adding it:
|
If you want, with `Load Text From Path` you can also recover the elements in "Bjornulf/Text" by just adding it:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
#### 117 - 📝👈 Line selector (🎲 Or random)
|
||||||
|
|
||||||
|
**Description:**
|
||||||
|
|
||||||
|
Select a line from input text. If set to 0 it will take a line at random.
|
||||||
|
If line taken at random,. it will not take a line starting with the symbol `#`.
|
||||||
|
So use that if you want to ignore a line.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
#### 118 - 🔊 TTS Configuration ⚙
|
||||||
|
|
||||||
|
**Description:**
|
||||||
|
|
||||||
|
New optional configuration node to connect to TTS node, it can request a list of speakers for a given language and replace in the main TTS node :
|
||||||
|
- The URL.
|
||||||
|
- The language.
|
||||||
|
- The speaker.
|
||||||
|
Connect them only if you want to replace them with the one from the configuration node.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
#### 119 - 📥👑 Load Lora Hunyuan Video (+Download from CivitAi)
|
||||||
|
|
||||||
|
**Description:**
|
||||||
|
|
||||||
|
Take a CivitAI Lora to use with Hunyuan. (NSFW list not on github of course.)
|
||||||
|
|
||||||
|
The workflow below is included : `workflows/HUNYUAN_basic_lora.json`) :
|
||||||
|
|
||||||
|

|
||||||
15
__init__.py
@@ -37,7 +37,7 @@ from .random_seed_with_text import TextToStringAndSeed
|
|||||||
from .load_image_alpha import LoadImageWithTransparency
|
from .load_image_alpha import LoadImageWithTransparency
|
||||||
from .image_mask_cutter import ImageMaskCutter
|
from .image_mask_cutter import ImageMaskCutter
|
||||||
from .character_description import CharacterDescriptionGenerator
|
from .character_description import CharacterDescriptionGenerator
|
||||||
from .text_to_speech import TextToSpeech
|
from .text_to_speech import TextToSpeech, XTTSConfig
|
||||||
from .loop_combine_texts_by_lines import CombineTextsByLines
|
from .loop_combine_texts_by_lines import CombineTextsByLines
|
||||||
from .free_vram_hack import FreeVRAM
|
from .free_vram_hack import FreeVRAM
|
||||||
from .pause_resume_stop import PauseResume
|
from .pause_resume_stop import PauseResume
|
||||||
@@ -87,14 +87,18 @@ from .ffmpeg_convert import ConvertVideo
|
|||||||
from .text_generator import TextGenerator, TextGeneratorScene, TextGeneratorStyle, TextGeneratorCharacterFemale, TextGeneratorCharacterMale, TextGeneratorOutfitMale, TextGeneratorOutfitFemale, ListLooper, ListLooperScene, ListLooperStyle, ListLooperCharacter, ListLooperOutfitFemale, ListLooperOutfitMale, TextGeneratorCharacterPose, TextGeneratorCharacterObject, TextGeneratorCharacterCreature
|
from .text_generator import TextGenerator, TextGeneratorScene, TextGeneratorStyle, TextGeneratorCharacterFemale, TextGeneratorCharacterMale, TextGeneratorOutfitMale, TextGeneratorOutfitFemale, ListLooper, ListLooperScene, ListLooperStyle, ListLooperCharacter, ListLooperOutfitFemale, ListLooperOutfitMale, TextGeneratorCharacterPose, TextGeneratorCharacterObject, TextGeneratorCharacterCreature
|
||||||
from .API_flux import APIGenerateFlux
|
from .API_flux import APIGenerateFlux
|
||||||
from .API_StableDiffusion import APIGenerateStability
|
from .API_StableDiffusion import APIGenerateStability
|
||||||
from .API_civitai import APIGenerateCivitAI, APIGenerateCivitAIAddLORA, CivitAIModelSelectorPony, CivitAIModelSelectorSD15, CivitAIModelSelectorSDXL, CivitAIModelSelectorFLUX_S, CivitAIModelSelectorFLUX_D, CivitAILoraSelectorSD15, CivitAILoraSelectorSDXL, CivitAILoraSelectorPONY
|
from .API_civitai import APIGenerateCivitAI, APIGenerateCivitAIAddLORA, CivitAIModelSelectorPony, CivitAIModelSelectorSD15, CivitAIModelSelectorSDXL, CivitAIModelSelectorFLUX_S, CivitAIModelSelectorFLUX_D, CivitAILoraSelectorSD15, CivitAILoraSelectorSDXL, CivitAILoraSelectorPONY, CivitAILoraSelectorHunyuan
|
||||||
from .API_falAI import APIGenerateFalAI
|
from .API_falAI import APIGenerateFalAI
|
||||||
from .latent_resolution_selector import LatentResolutionSelector
|
from .latent_resolution_selector import LatentResolutionSelector
|
||||||
from .loader_lora_with_path import LoaderLoraWithPath
|
from .loader_lora_with_path import LoaderLoraWithPath
|
||||||
from .load_text import LoadTextFromFolder, LoadTextFromPath
|
from .load_text import LoadTextFromFolder, LoadTextFromPath
|
||||||
from .string_splitter import TextSplitin5
|
from .string_splitter import TextSplitin5
|
||||||
|
from .line_selector import LineSelector
|
||||||
|
# from .text_generator_t2v import TextGeneratorText2Video
|
||||||
NODE_CLASS_MAPPINGS = {
|
NODE_CLASS_MAPPINGS = {
|
||||||
|
"Bjornulf_LineSelector": LineSelector,
|
||||||
|
"Bjornulf_XTTSConfig": XTTSConfig,
|
||||||
|
# "Bjornulf_TextGeneratorText2Video": TextGeneratorText2Video,
|
||||||
"Bjornulf_LatentResolutionSelector": LatentResolutionSelector,
|
"Bjornulf_LatentResolutionSelector": LatentResolutionSelector,
|
||||||
"Bjornulf_LoaderLoraWithPath": LoaderLoraWithPath,
|
"Bjornulf_LoaderLoraWithPath": LoaderLoraWithPath,
|
||||||
"Bjornulf_LoadTextFromPath": LoadTextFromPath,
|
"Bjornulf_LoadTextFromPath": LoadTextFromPath,
|
||||||
@@ -112,6 +116,7 @@ NODE_CLASS_MAPPINGS = {
|
|||||||
"Bjornulf_CivitAILoraSelectorSD15": CivitAILoraSelectorSD15,
|
"Bjornulf_CivitAILoraSelectorSD15": CivitAILoraSelectorSD15,
|
||||||
"Bjornulf_CivitAILoraSelectorSDXL": CivitAILoraSelectorSDXL,
|
"Bjornulf_CivitAILoraSelectorSDXL": CivitAILoraSelectorSDXL,
|
||||||
"Bjornulf_CivitAILoraSelectorPONY": CivitAILoraSelectorPONY,
|
"Bjornulf_CivitAILoraSelectorPONY": CivitAILoraSelectorPONY,
|
||||||
|
"Bjornulf_CivitAILoraSelectorHunyuan": CivitAILoraSelectorHunyuan,
|
||||||
# "Bjornulf_CivitAILoraSelector": CivitAILoraSelector,
|
# "Bjornulf_CivitAILoraSelector": CivitAILoraSelector,
|
||||||
"Bjornulf_APIGenerateCivitAIAddLORA": APIGenerateCivitAIAddLORA,
|
"Bjornulf_APIGenerateCivitAIAddLORA": APIGenerateCivitAIAddLORA,
|
||||||
"Bjornulf_TextGenerator": TextGenerator,
|
"Bjornulf_TextGenerator": TextGenerator,
|
||||||
@@ -222,7 +227,9 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
|||||||
# "Bjornulf_ImageBlend": "🎨 Image Blend",
|
# "Bjornulf_ImageBlend": "🎨 Image Blend",
|
||||||
# "Bjornulf_APIHiResCivitAI": "🎨➜🎨 API Image hires fix (CivitAI)",
|
# "Bjornulf_APIHiResCivitAI": "🎨➜🎨 API Image hires fix (CivitAI)",
|
||||||
# "Bjornulf_CivitAILoraSelector": "lora Civit",
|
# "Bjornulf_CivitAILoraSelector": "lora Civit",
|
||||||
|
"Bjornulf_LineSelector": "📝👈 Line selector (🎲 Or random)",
|
||||||
"Bjornulf_LoaderLoraWithPath": "📥👑 Load Lora with Path",
|
"Bjornulf_LoaderLoraWithPath": "📥👑 Load Lora with Path",
|
||||||
|
# "Bjornulf_TextGeneratorText2Video": "🔥📝📹 Text Generator for text to video 📹📝🔥",
|
||||||
"Bjornulf_TextSplitin5": "📝🔪 Text split in 5",
|
"Bjornulf_TextSplitin5": "📝🔪 Text split in 5",
|
||||||
"Bjornulf_LatentResolutionSelector": "🩷 Empty Latent Selector",
|
"Bjornulf_LatentResolutionSelector": "🩷 Empty Latent Selector",
|
||||||
"Bjornulf_CivitAIModelSelectorSD15": "📥 Load checkpoint SD1.5 (+Download from CivitAi)",
|
"Bjornulf_CivitAIModelSelectorSD15": "📥 Load checkpoint SD1.5 (+Download from CivitAi)",
|
||||||
@@ -233,6 +240,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
|||||||
"Bjornulf_CivitAILoraSelectorSD15": "📥👑 Load Lora SD1.5 (+Download from CivitAi)",
|
"Bjornulf_CivitAILoraSelectorSD15": "📥👑 Load Lora SD1.5 (+Download from CivitAi)",
|
||||||
"Bjornulf_CivitAILoraSelectorSDXL": "📥👑 Load Lora SDXL (+Download from CivitAi)",
|
"Bjornulf_CivitAILoraSelectorSDXL": "📥👑 Load Lora SDXL (+Download from CivitAi)",
|
||||||
"Bjornulf_CivitAILoraSelectorPONY": "📥👑 Load Lora Pony (+Download from CivitAi)",
|
"Bjornulf_CivitAILoraSelectorPONY": "📥👑 Load Lora Pony (+Download from CivitAi)",
|
||||||
|
"Bjornulf_CivitAILoraSelectorHunyuan": "📥👑📹 Load Lora Hunyuan Video (+Download from CivitAi)",
|
||||||
"Bjornulf_APIGenerateFalAI": "☁🎨 API Image Generator (FalAI) 🎨☁",
|
"Bjornulf_APIGenerateFalAI": "☁🎨 API Image Generator (FalAI) 🎨☁",
|
||||||
"Bjornulf_APIGenerateCivitAI": "☁🎨 API Image Generator (CivitAI) 🎨☁",
|
"Bjornulf_APIGenerateCivitAI": "☁🎨 API Image Generator (CivitAI) 🎨☁",
|
||||||
"Bjornulf_APIGenerateCivitAIAddLORA": "☁👑 Add Lora (API ONLY - CivitAI) 👑☁",
|
"Bjornulf_APIGenerateCivitAIAddLORA": "☁👑 Add Lora (API ONLY - CivitAI) 👑☁",
|
||||||
@@ -262,6 +270,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
|||||||
"Bjornulf_OllamaTalk": "🦙💬 Ollama Talk",
|
"Bjornulf_OllamaTalk": "🦙💬 Ollama Talk",
|
||||||
"Bjornulf_OllamaImageVision": "🦙👁 Ollama Vision",
|
"Bjornulf_OllamaImageVision": "🦙👁 Ollama Vision",
|
||||||
"Bjornulf_OllamaConfig": "🦙 Ollama Configuration ⚙",
|
"Bjornulf_OllamaConfig": "🦙 Ollama Configuration ⚙",
|
||||||
|
"Bjornulf_XTTSConfig": "🔊 TTS Configuration ⚙",
|
||||||
"Bjornulf_OllamaSystemJobSelector": "🦙 Ollama Job Selector 👇",
|
"Bjornulf_OllamaSystemJobSelector": "🦙 Ollama Job Selector 👇",
|
||||||
"Bjornulf_OllamaSystemPersonaSelector": "🦙 Ollama Persona Selector 👇",
|
"Bjornulf_OllamaSystemPersonaSelector": "🦙 Ollama Persona Selector 👇",
|
||||||
"Bjornulf_SpeechToText": "🔊➜📝 STT - Speech to Text",
|
"Bjornulf_SpeechToText": "🔊➜📝 STT - Speech to Text",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 4.6 MiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 491 KiB After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 7.7 MiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 849 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 457 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 2.3 MiB After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 424 KiB After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 21 KiB |
BIN
civitai/lora_hunyuan_video/Anna_Hunyuan_Lora_51250388.jpeg
Normal file
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 18 KiB |
BIN
civitai/lora_hunyuan_video/Black_Latex_-_HunYuan_47818801.jpeg
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 19 KiB |
BIN
civitai/lora_hunyuan_video/Dua_Lipa_Hunyuan_Video_48740585.jpeg
Normal file
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 23 KiB |