Spaces:
Runtime error
Runtime error
import os | |
from imgutils.tagging import tags_to_text | |
from .base import LocalDirectoryExporter | |
from ..model import ImageItem | |
class TextualInversionExporter(LocalDirectoryExporter): | |
def __init__(self, output_dir: str, clear: bool = False, | |
use_spaces: bool = False, use_escape: bool = True, | |
include_score: bool = False, score_descend: bool = True, | |
skip_when_image_exist: bool = False): | |
LocalDirectoryExporter.__init__(self, output_dir, clear) | |
self.use_spaces = use_spaces | |
self.use_escape = use_escape | |
self.include_score = include_score | |
self.score_descend = score_descend | |
self.untitles = 0 | |
self.skip_when_image_exist = skip_when_image_exist | |
def export_item(self, item: ImageItem): | |
if 'filename' in item.meta: | |
filename = item.meta['filename'] | |
else: | |
self.untitles += 1 | |
filename = f'untited_{self.untitles}.png' | |
tags = item.meta.get('tags', None) or {} | |
full_filename = os.path.join(self.output_dir, filename) | |
full_tagname = os.path.join(self.output_dir, os.path.splitext(filename)[0] + '.txt') | |
full_directory = os.path.dirname(full_filename) | |
if full_directory: | |
os.makedirs(full_directory, exist_ok=True) | |
if not self.skip_when_image_exist or not os.path.exists(full_filename): | |
item.image.save(full_filename) | |
with open(full_tagname, 'w', encoding='utf-8') as f: | |
f.write(tags_to_text(tags, self.use_spaces, self.use_escape, self.include_score, self.score_descend)) | |
def reset(self): | |
self.untitles = 0 | |