mirror of
				https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
				synced 2025-11-04 03:55:05 +00:00 
			
		
		
		
	Merge pull request #14663 from aalbacetef/feature/add-model-to-log-file
feature/add-model-to-log-file
This commit is contained in:
		
						commit
						3a5196de1b
					
				@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					import csv
 | 
				
			||||||
import dataclasses
 | 
					import dataclasses
 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
import html
 | 
					import html
 | 
				
			||||||
@ -36,8 +37,33 @@ def plaintext_to_html(text, classname=None):
 | 
				
			|||||||
    return f"<p class='{classname}'>{content}</p>" if classname else f"<p>{content}</p>"
 | 
					    return f"<p class='{classname}'>{content}</p>" if classname else f"<p>{content}</p>"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def update_logfile(logfile_path, fields):
 | 
				
			||||||
 | 
					    """Update a logfile from old format to new format to maintain CSV integrity."""
 | 
				
			||||||
 | 
					    with open(logfile_path, "r", encoding="utf8", newline="") as file:
 | 
				
			||||||
 | 
					        reader = csv.reader(file)
 | 
				
			||||||
 | 
					        rows = list(reader)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # blank file: leave it as is
 | 
				
			||||||
 | 
					    if not rows:
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # file is already synced, do nothing
 | 
				
			||||||
 | 
					    if len(rows[0]) == len(fields):
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rows[0] = fields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # append new fields to each row as empty values
 | 
				
			||||||
 | 
					    for row in rows[1:]:
 | 
				
			||||||
 | 
					        while len(row) < len(fields):
 | 
				
			||||||
 | 
					            row.append("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    with open(logfile_path, "w", encoding="utf8", newline="") as file:
 | 
				
			||||||
 | 
					        writer = csv.writer(file)
 | 
				
			||||||
 | 
					        writer.writerows(rows)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def save_files(js_data, images, do_make_zip, index):
 | 
					def save_files(js_data, images, do_make_zip, index):
 | 
				
			||||||
    import csv
 | 
					 | 
				
			||||||
    filenames = []
 | 
					    filenames = []
 | 
				
			||||||
    fullfns = []
 | 
					    fullfns = []
 | 
				
			||||||
    parsed_infotexts = []
 | 
					    parsed_infotexts = []
 | 
				
			||||||
@ -63,11 +89,31 @@ def save_files(js_data, images, do_make_zip, index):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    os.makedirs(shared.opts.outdir_save, exist_ok=True)
 | 
					    os.makedirs(shared.opts.outdir_save, exist_ok=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    with open(os.path.join(shared.opts.outdir_save, "log.csv"), "a", encoding="utf8", newline='') as file:
 | 
					    fields = [
 | 
				
			||||||
 | 
					        "prompt",
 | 
				
			||||||
 | 
					        "seed",
 | 
				
			||||||
 | 
					        "width",
 | 
				
			||||||
 | 
					        "height",
 | 
				
			||||||
 | 
					        "sampler",
 | 
				
			||||||
 | 
					        "cfgs",
 | 
				
			||||||
 | 
					        "steps",
 | 
				
			||||||
 | 
					        "filename",
 | 
				
			||||||
 | 
					        "negative_prompt",
 | 
				
			||||||
 | 
					        "sd_model_name",
 | 
				
			||||||
 | 
					        "sd_model_hash",
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					    logfile_path = os.path.join(shared.opts.outdir_save, "log.csv")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # NOTE: ensure csv integrity when fields are added by
 | 
				
			||||||
 | 
					    # updating headers and padding with delimeters where needed
 | 
				
			||||||
 | 
					    if os.path.exists(logfile_path):
 | 
				
			||||||
 | 
					        update_logfile(logfile_path, fields)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    with open(logfile_path, "a", encoding="utf8", newline='') as file:
 | 
				
			||||||
        at_start = file.tell() == 0
 | 
					        at_start = file.tell() == 0
 | 
				
			||||||
        writer = csv.writer(file)
 | 
					        writer = csv.writer(file)
 | 
				
			||||||
        if at_start:
 | 
					        if at_start:
 | 
				
			||||||
            writer.writerow(["prompt", "seed", "width", "height", "sampler", "cfgs", "steps", "filename", "negative_prompt"])
 | 
					            writer.writerow(fields)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for image_index, filedata in enumerate(images, start_index):
 | 
					        for image_index, filedata in enumerate(images, start_index):
 | 
				
			||||||
            image = image_from_url_text(filedata)
 | 
					            image = image_from_url_text(filedata)
 | 
				
			||||||
@ -87,7 +133,7 @@ def save_files(js_data, images, do_make_zip, index):
 | 
				
			|||||||
                filenames.append(os.path.basename(txt_fullfn))
 | 
					                filenames.append(os.path.basename(txt_fullfn))
 | 
				
			||||||
                fullfns.append(txt_fullfn)
 | 
					                fullfns.append(txt_fullfn)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        writer.writerow([parsed_infotexts[0]['Prompt'], parsed_infotexts[0]['Seed'], data["width"], data["height"], data["sampler_name"], data["cfg_scale"], data["steps"], filenames[0], parsed_infotexts[0]['Negative prompt']])
 | 
					        writer.writerow([parsed_infotexts[0]['Prompt'], parsed_infotexts[0]['Seed'], data["width"], data["height"], data["sampler_name"], data["cfg_scale"], data["steps"], filenames[0], parsed_infotexts[0]['Negative prompt'], data["sd_model_name"], data["sd_model_hash"]])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Make Zip
 | 
					    # Make Zip
 | 
				
			||||||
    if do_make_zip:
 | 
					    if do_make_zip:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user