Download extensions/sd-model-organizer/scripts/mo/models.py from dikdimon/ext: direct link, hf CLI and curl.
- Browser
- Download file 3.64 kB
-
https://huggingface.co/dikdimon/ext/resolve/main/extensions/sd-model-organizer/scripts/mo/models.py
- Command line
-
hf download hf://dikdimon/ext/extensions/sd-model-organizer/scripts/mo/models.py
-
curl -L -o models.py https://huggingface.co/dikdimon/ext/resolve/main/extensions/sd-model-organizer/scripts/mo/models.py
3.64 kB
| import os.path | |
| from enum import Enum | |
| class ModelType(Enum): | |
| CHECKPOINT = 'Checkpoint' | |
| VAE = 'VAE' | |
| LORA = 'Lora' | |
| HYPER_NETWORK = 'Hyper Network' | |
| LYCORIS = 'LyCORIS' | |
| EMBEDDING = 'Embedding' | |
| OTHER = 'Other' | |
| def by_value(value: str): | |
| for model_type in ModelType: | |
| if model_type.value == value.strip(): | |
| return model_type | |
| raise ValueError(f'There is no model type defined with name "{value}"') | |
| class ModelSort(Enum): | |
| TIME_ADDED_ASC = 'Time Added' | |
| TIME_ADDED_DESC = 'Time Added Reversed' | |
| NAME_ASC = 'Name' | |
| NAME_DESC = 'Name Reversed' | |
| def by_value(value: str): | |
| for model_sort in ModelSort: | |
| if model_sort.value == value.strip(): | |
| return model_sort | |
| raise ValueError(f'There is no model sort defined with name "{value}"') | |
| class Record: | |
| def __init__(self, id_, | |
| name: str, | |
| model_type: ModelType, | |
| download_url: str = '', | |
| url: str = '', | |
| download_path: str = '', | |
| download_filename: str = '', | |
| preview_url: str = '', | |
| description: str = '', | |
| positive_prompts: str = '', | |
| negative_prompts: str = '', | |
| sha256_hash: str = '', | |
| md5_hash: str = '', | |
| location: str = '', | |
| created_at: float = 0, | |
| groups=None, | |
| subdir: str = '', | |
| weight: float = 1): | |
| if groups is None: | |
| groups = [] | |
| self.id_ = id_ | |
| self.name = name | |
| self.model_type = model_type | |
| self.url = url | |
| self.download_url = download_url | |
| self.download_path = download_path | |
| self.download_filename = download_filename | |
| self.preview_url = preview_url | |
| self.description = description | |
| self.positive_prompts = positive_prompts | |
| self.negative_prompts = negative_prompts | |
| self.sha256_hash = sha256_hash | |
| self.md5_hash = md5_hash | |
| self.location = location | |
| self.created_at = created_at | |
| self.groups = groups | |
| self.subdir = subdir | |
| self.weight = weight; | |
| def is_file_exists(self) -> bool: | |
| return bool(self.location) and os.path.isfile(self.location) | |
| def is_downloadable(self) -> bool: | |
| return bool(self.download_url) | |
| def is_download_possible(self) -> bool: | |
| return self.is_downloadable() and not self.is_file_exists() | |
| def is_local_file_record(self): | |
| return self.id_ is None and self.is_file_exists() | |
| def __str__(self): | |
| return f'id="{self.id_}", ' \ | |
| f'name="{self.name}", ' \ | |
| f'model_type="{self.model_type}", ' \ | |
| f'url="{self.url}", ' \ | |
| f'download_url="{self.download_url}", ' \ | |
| f'download_path="{self.download_path}", ' \ | |
| f'download_filename="{self.download_filename}", ' \ | |
| f'preview_url="{self.preview_url}", ' \ | |
| f'description="{self.description}", ' \ | |
| f'positive_prompts="{self.positive_prompts}", ' \ | |
| f'negative_prompts="{self.negative_prompts}", ' \ | |
| f'sha256_hash="{self.sha256_hash}", ' \ | |
| f'md5_hash="{self.md5_hash}", ' \ | |
| f'location="{self.location}", ' \ | |
| f'created_at="{self.created_at}", ' \ | |
| f'groups="{self.groups}", ' \ | |
| f'subdir="{self.subdir}",' \ | |
| f'weight="{self.weight}".' | |