Unverified Commit f3d1631a authored by JaredTherriault's avatar JaredTherriault
Browse files

Offloading custom work

-custom_statics works to do mass replace strings, intended for copy-pasting gen info from internet generations and replacing unsavory prompts with safer prompts for my own sanity
-tried to implement this into generation_parameters_copypaste but it didn't work out this iteration, presumably because we return a string and the calling method is looking for an object type
-updated webui-user.bat to set a custom temp directory (for disk space concerns) and to apply xformers (for generation speed)

I probably won't be merging any of this work into the main repo since I don't want to mess with anyone else's prompts, this is just intended to keep my workspace safe from anything I don't want to see. Eventually this should be done in an extension which I could then publish, but I need to learn a lot more about the extension and callback systems in the main repo first. just uploading this to my fork for now so i don't lose the current progress.
parent c9c8485b
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
import os
import gc
import re

import modules.paths as paths
            
class CustomStatics:

    @staticmethod
    # loads a file with strings structured as below, on each line with a : between the search and replace strings, into a list
    # search0:replace0
    # search string:replace string
    #
    # Then replaces all occurrences of the list's search strings with the list's replace strings in one go
    def mass_replace_strings(input_string):
        with open(os.path.join(paths.data_path, "custom_statics/Replacements.txt"), "r", encoding="utf8") as file:
            replacements = file.readlines()
    
            replacement_dict = {}
            for line in replacements:
                search, replace = line.strip().split(":")
                replacement_dict[search] = replace
    
            def replace(match_text):
                return replacement_dict[match_text.group(0)]
    
            return re.sub('|'.join(r'\b%s\b' % re.escape(s) for s in replacement_dict.keys()), replace, str(input_string))
    
        return str(geninfo)
 No newline at end of file
+8 −0
Original line number Diff line number Diff line
@@ -370,6 +370,14 @@ def connect_paste(button, paste_fields, input_comp, override_settings_component,
                    prompt = file.read()

        params = parse_generation_parameters(prompt)
        
        # This sanitizes unsavory prompt words when copying from another image
        # for my own sanity. This is not intended to be contributed to the main repo,
        # it's just so I don't have to see anything I'm not interested in when batch
        # reproducing images from civit.ai or elsewhere when working on loras
        # todo: make this work with the callback instead of forcing it here, this can be an extension when I feel like putting it together :D
        from modules import custom_statics
        params = custom_statics.CustomStatics.mass_replace_strings(params)
        script_callbacks.infotext_pasted_callback(prompt, params)
        res = []

+2 −2
Original line number Diff line number Diff line
@echo off

set TEMP=G:\SD-temp
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=
set COMMANDLINE_ARGS= --xformers

call webui.bat