78f843f9创建于 8月1日历史提交
import html
import json
import os
from modules import shared, ui_extra_networks, sd_unet, hashes, modelstats
from modules.logger import log


class ExtraNetworksPageUNets(ui_extra_networks.ExtraNetworksPage):
    def __init__(self):
        super().__init__('UNet/DiT')

    def refresh(self):
        return sd_unet.refresh_unet_list()

    def list_items(self):
        results = []
        for name, filename in sd_unet.unet_dict.items():
            try:
                size, mtime = modelstats.stat(filename)
                info = self.find_info(filename)
                version = self.find_version(None, info)
                record = {
                    "type": 'UNet/DiT',
                    "name": name,
                    "alias": os.path.splitext(os.path.basename(filename))[0],
                    "title": name,
                    "filename": filename,
                    "hash": hashes.sha256_from_cache(filename, f"unet/{name}"),
                    "preview": self.find_preview(filename),
                    "local_preview": f"{os.path.splitext(filename)[0]}.{shared.opts.samples_format}",
                    "metadata": {},
                    "onclick": '"' + html.escape(f"""return selectUNet({json.dumps(name)})""") + '"',
                    "mtime": mtime,
                    "size": size,
                    "info": info,
                    "description": self.find_description(filename, info),
                    "version": version.get("baseModel", "N/A") if info else "N/A",
                }
                results.append(record)
            except Exception as e:
                log.debug(f'Networks error: type=unet file="{filename}" {e}')
        return results

    def allowed_directories_for_previews(self):
        return [v for v in [shared.opts.unet_dir] if v is not None]