aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEyrie <me@eyriewow.com>2022-09-25 12:29:40 +0200
committerAUTOMATIC1111 <16777216c@gmail.com>2022-09-25 17:11:07 +0300
commit40166dbf086f49b3566ac5a2003dd0a980dc29e0 (patch)
treeaee2a087c254f015efd10b0790cb2deb38c0d725
parent50ae19acf6003708390ae6696e833cf596621882 (diff)
Added job_id pattern for directories
-rw-r--r--javascript/hints.js1
-rw-r--r--modules/images.py1
-rw-r--r--modules/shared.py6
-rw-r--r--webui.py1
4 files changed, 8 insertions, 1 deletions
diff --git a/javascript/hints.js b/javascript/hints.js
index b43f7bbd..a5311eaa 100644
--- a/javascript/hints.js
+++ b/javascript/hints.js
@@ -60,6 +60,7 @@ titles = {
"Images filename pattern": "Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date]; leave empty for default.",
"Directory name pattern": "Use following tags to define how subdirectories for images and grids are chosen: [steps], [cfg], [prompt], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date]; leave empty for default.",
"Max prompt words": "Set the maximum number of words to be used in the [prompt_words] option; ATTENTION: If the words are too long, they may exceed the maximum length of the file path that the system can handle",
+ "Length of job id": "Sets the number of characters to be used for the [job_id] option",
"Loopback": "Process an image, use it as an input, repeat.",
"Loops": "How many times to repeat processing an image and using it as input for the next iteration",
diff --git a/modules/images.py b/modules/images.py
index 642cde36..e85c71d5 100644
--- a/modules/images.py
+++ b/modules/images.py
@@ -295,6 +295,7 @@ def apply_filename_pattern(x, p, seed, prompt):
x = x.replace("[model_hash]", shared.sd_model.sd_model_hash)
x = x.replace("[date]", datetime.date.today().isoformat())
+ x = x.replace("[job_id]", shared.state.job_id)
if cmd_opts.hide_ui_dir_config:
x = re.sub(r'^[\\/]+|\.{2,}[\\/]+|[\\/]+\.{2,}', '', x)
diff --git a/modules/shared.py b/modules/shared.py
index 1ce6eefc..014febcc 100644
--- a/modules/shared.py
+++ b/modules/shared.py
@@ -4,6 +4,7 @@ import json
import os
import gradio as gr
import tqdm
+import random
import modules.artists
from modules.paths import script_path, sd_path
@@ -65,6 +66,7 @@ class State:
job = ""
job_no = 0
job_count = 0
+ job_id = 0
sampling_step = 0
sampling_steps = 0
current_latent = None
@@ -78,6 +80,8 @@ class State:
self.job_no += 1
self.sampling_step = 0
self.current_image_sampling_step = 0
+ def gen_job_id(self):
+ return ''.join(random.choices('0123456789abcdefghijklmnopqrstuvwxyz', k=opts.job_id_length))
state = State()
@@ -115,7 +119,6 @@ def options_section(section_identifer, options_dict):
return options_dict
-
hide_dirs = {"visible": not cmd_opts.hide_ui_dir_config}
options_templates = {}
@@ -156,6 +159,7 @@ options_templates.update(options_section(('saving-to-dirs', "Saving to a directo
"grid_save_to_dirs": OptionInfo(False, "Save grids to subdirectory"),
"directories_filename_pattern": OptionInfo("", "Directory name pattern"),
"directories_max_prompt_words": OptionInfo(8, "Max prompt words", gr.Slider, {"minimum": 1, "maximum": 20, "step": 1}),
+ "job_id_length": OptionInfo(5, "Length of job id", gr.Slider, {"minimum": 5, "maximum": 20, "step": 1}),
}))
options_templates.update(options_section(('upscaling', "Upscaling"), {
diff --git a/webui.py b/webui.py
index 64c9d462..d0a4e00f 100644
--- a/webui.py
+++ b/webui.py
@@ -50,6 +50,7 @@ def wrap_gradio_gpu_call(func):
shared.state.sampling_step = 0
shared.state.job_count = -1
shared.state.job_no = 0
+ shared.state.job_id = shared.state.gen_job_id()
shared.state.current_latent = None
shared.state.current_image = None
shared.state.current_image_sampling_step = 0