Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Extra network description files #8366

Merged
merged 2 commits into from
Mar 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 2 additions & 9 deletions extensions-builtin/Lora/ui_extra_networks_lora.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,11 @@ def refresh(self):
def list_items(self):
for name, lora_on_disk in lora.available_loras.items():
path, ext = os.path.splitext(lora_on_disk.filename)
previews = [path + ".png", path + ".preview.png"]

preview = None
for file in previews:
if os.path.isfile(file):
preview = self.link_preview(file)
break

yield {
"name": name,
"filename": path,
"preview": preview,
"preview": self._find_preview(path),
"description": self._find_description(path),
"search_term": self.search_terms_from_path(lora_on_disk.filename),
"prompt": json.dumps(f"<lora:{name}:") + " + opts.extra_networks_default_multiplier + " + json.dumps(">"),
"local_preview": path + ".png",
Expand Down
1 change: 1 addition & 0 deletions html/extra-networks-card.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<span style="display:none" class='search_term'>{search_term}</span>
</div>
<span class='name'>{name}</span>
<span class='description'>{description}</span>
</div>
</div>

25 changes: 25 additions & 0 deletions modules/ui_extra_networks.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import glob
import os.path
import urllib.parse
from functools import lru_cache
from pathlib import Path
from typing import Optional

from modules import shared
import gradio as gr
Expand Down Expand Up @@ -130,13 +132,36 @@ def create_html_for_item(self, item, tabname):
"tabname": json.dumps(tabname),
"local_preview": json.dumps(item["local_preview"]),
"name": item["name"],
"description": (item.get("description") or ""),
"card_clicked": onclick,
"save_card_preview": '"' + html.escape(f"""return saveCardPreview(event, {json.dumps(tabname)}, {json.dumps(item["local_preview"])})""") + '"',
"search_term": item.get("search_term", ""),
}

return self.card_page.format(**args)

def _find_preview(self, path: str) -> Optional[str]:
"""
Find a preview PNG for a given path (without extension) and call link_preview on it.
"""
for file in [path + ".png", path + ".preview.png"]:
if os.path.isfile(file):
return self.link_preview(file)
return None

@lru_cache(maxsize=512)
def _find_description(self, path: str) -> Optional[str]:
"""
Find and read a description file for a given path (without extension).
"""
for file in [f"{path}.txt", f"{path}.description.txt"]:
try:
with open(file, "r", encoding="utf-8", errors="replace") as f:
return f.read()
except OSError:
pass
return None


def intialize():
extra_pages.clear()
Expand Down
12 changes: 2 additions & 10 deletions modules/ui_extra_networks_checkpoints.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import html
import json
import os
import urllib.parse

from modules import shared, ui_extra_networks, sd_models

Expand All @@ -17,18 +16,11 @@ def list_items(self):
checkpoint: sd_models.CheckpointInfo
for name, checkpoint in sd_models.checkpoints_list.items():
path, ext = os.path.splitext(checkpoint.filename)
previews = [path + ".png", path + ".preview.png"]

preview = None
for file in previews:
if os.path.isfile(file):
preview = self.link_preview(file)
break

yield {
"name": checkpoint.name_for_extra,
"filename": path,
"preview": preview,
"preview": self._find_preview(path),
"description": self._find_description(path),
"search_term": self.search_terms_from_path(checkpoint.filename) + " " + (checkpoint.sha256 or ""),
"onclick": '"' + html.escape(f"""return selectCheckpoint({json.dumps(name)})""") + '"',
"local_preview": path + ".png",
Expand Down
10 changes: 2 additions & 8 deletions modules/ui_extra_networks_hypernets.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,12 @@ def refresh(self):
def list_items(self):
for name, path in shared.hypernetworks.items():
path, ext = os.path.splitext(path)
previews = [path + ".png", path + ".preview.png"]

preview = None
for file in previews:
if os.path.isfile(file):
preview = self.link_preview(file)
break

yield {
"name": name,
"filename": path,
"preview": preview,
"preview": self._find_preview(path),
"description": self._find_description(path),
"search_term": self.search_terms_from_path(path),
"prompt": json.dumps(f"<hypernet:{name}:") + " + opts.extra_networks_default_multiplier + " + json.dumps(">"),
"local_preview": path + ".png",
Expand Down
9 changes: 2 additions & 7 deletions modules/ui_extra_networks_textual_inversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,11 @@ def refresh(self):
def list_items(self):
for embedding in sd_hijack.model_hijack.embedding_db.word_embeddings.values():
path, ext = os.path.splitext(embedding.filename)
preview_file = path + ".preview.png"

preview = None
if os.path.isfile(preview_file):
preview = self.link_preview(preview_file)

yield {
"name": embedding.name,
"filename": embedding.filename,
"preview": preview,
"preview": self._find_preview(path),
"description": self._find_description(path),
"search_term": self.search_terms_from_path(embedding.filename),
"prompt": json.dumps(embedding.name),
"local_preview": path + ".preview.png",
Expand Down
11 changes: 11 additions & 0 deletions style.css
Original file line number Diff line number Diff line change
Expand Up @@ -939,6 +939,17 @@ footer {
line-break: anywhere;
}

.extra-network-cards .card .actions .description {
display: block;
max-height: 3em;
white-space: pre-wrap;
line-height: 1.1;
}

.extra-network-cards .card .actions .description:hover {
max-height: none;
}

.extra-network-cards .card .actions:hover .additional{
display: block;
}
Expand Down