import argparse #line:1 import binascii #line:2 def str_to_bool (O000O00OOO0O0OO00 ):#line:5 if O000O00OOO0O0OO00 .lower ()in ('yes','true','t','y','1'):#line:6 return True #line:7 elif O000O00OOO0O0OO00 .lower ()in ('no','false','f','n','0'):#line:8 return False #line:9 else :#line:10 raise argparse .ArgumentTypeError ('Invalid boolean value: {}'.format (O000O00OOO0O0OO00 ))#line:11 parser =argparse .ArgumentParser ()#line:14 parser .add_argument ('--UI',type =str )#line:16 parser .add_argument ('--Version',type =str )#line:17 parser .add_argument ('--ControlNet',type =str )#line:18 parser .add_argument ('--Roop',type =str_to_bool )#line:19 parser .add_argument ('--Drive_Map',type =str_to_bool )#line:20 parser .add_argument ('--Key_words',type =str_to_bool )#line:21 parser .add_argument ('--SadTalker',type =str_to_bool )#line:22 parser .add_argument ('--Segment_Anything',type =str_to_bool )#line:23 args =parser .parse_args ()#line:26 UI =args .UI #line:29 Roop =args .Roop #line:30 Version =args .Version #line:31 ControlNet =args .ControlNet #line:32 Drive_Map =args .Drive_Map #line:33 Key_words =args .Key_words #line:34 Segment_Anything =args .Segment_Anything #line:35 SadTalker =args .SadTalker #line:36 import sys #line:40 import os #line:41 import json #line:42 import base64 #line:43 import importlib .util #line:44 from IPython import get_ipython #line:45 from IPython .display import clear_output #line:46 from google .colab import drive #line:47 import tensorflow as tf #line:48 print ("TensorFlow version:",tf .__version__ )#line:51 if tf .test .gpu_device_name ():#line:52 drive .mount ('/content/drive')#line:53 else :#line:54 raise Exception ("\n请在《代码执行程序》-《更改运行时类型》-设置为GPU~")#line:55 w =base64 .b64decode (("d2VidWk=").encode ('ascii')).decode ('ascii')#line:57 sdw =base64 .b64decode (("c3RhYmxlLWRpZmZ1c2lvbi13ZWJ1aQ==").encode ('ascii')).decode ('ascii')#line:58 wb =f'/content/Gm'#line:61 gwb =f'/content/drive/MyDrive/SD_DATA'#line:62 get_ipython ().run_line_magic ('cd','/content')#line:64 get_ipython ().run_line_magic ('env','TF_CPP_MIN_LOG_LEVEL=1')#line:65 def cloudDriveSync (O00O0O00OO00O00O0 ,OO0OOOO0000OOO000 ='',OO00O0OOO0O0O0000 =False ):#line:68 if not os .path .exists (O00O0O00OO00O00O0 ):#line:70 get_ipython ().system (f'mkdir {O00O0O00OO00O00O0}')#line:72 if not OO00O0OOO0O0O0000 :#line:75 return #line:76 get_ipython ().system (f'rm -rf {OO0OOOO0000OOO000}')#line:79 get_ipython ().system (f'ln -s {O00O0O00OO00O00O0} {OO0OOOO0000OOO000}')#line:81 def initCloudDrive ():#line:84 cloudDriveSync (f'{gwb}')#line:85 cloudDriveSync (f'{gwb}/Config')#line:86 cloudDriveSync (f'{gwb}/Models',f'{wb}/models/Stable-diffusion',Drive_Map )#line:87 cloudDriveSync (f'{gwb}/Lora',f'{wb}/models/Lora',Drive_Map )#line:88 cloudDriveSync (f'{gwb}/LyCORIS',f'{wb}/models/LyCORIS',Drive_Map )#line:89 cloudDriveSync (f'{gwb}/hypernetworks',f'{wb}/models/hypernetworks',Drive_Map )#line:90 cloudDriveSync (f'{gwb}/Vae',f'{wb}/models/VAE',Drive_Map )#line:91 cloudDriveSync (f'{gwb}/Outputs',f'{wb}/outputs',Drive_Map )#line:92 if not os .path .exists (f'{gwb}/Config/config.json'):#line:96 get_ipython ().system (f'wget -O {gwb}/Config/config.json "https://huggingface.co/gmk123/main/raw/main/config.json"')#line:97 if not os .path .exists (f'{gwb}/styles.csv'):#line:99 get_ipython ().system (f'wget -O {gwb}/styles.csv "https://huggingface.co/gmk123/main/raw/main/styles.csv"')#line:101 def gitDownload (O0O000OO00OOOOOO0 ,OOOO0O00OOOO0O0OO ):#line:104 if os .path .exists (OOOO0O00OOOO0O0OO ):#line:105 return #line:106 get_ipython ().system (f'git clone {O0O000OO00OOOOOO0} {OOOO0O00OOOO0O0OO}')#line:108 def installAdditional ():#line:111 O0OO000O000O00O0O =[f'https://github.com/camenduru/{sdw}-images-browser',f'https://github.com/camenduru/sd-{w}-tunnels',f'https://github.com/etherealxx/batchlinks-{w}',f'https://github.com/camenduru/sd-civitai-browser',f'https://github.com/AUTOMATIC1111/{sdw}-rembg',f'https://github.com/thomasasfk/sd-{w}-aspect-ratio-helper',f'https://github.com/hanamizuki-ai/{sdw}-localization-zh_Hans',f'https://github.com/kohya-ss/sd-{w}-additional-networks',f'https://github.com/fkunn1326/openpose-editor',f'https://github.com/hnmr293/posex',f'https://github.com/s9roll7/ebsynth_utility',f'https://github.com/ashen-sensored/{sdw}-two-shot',f'https://github.com/nonnonstop/sd-{w}-3d-open-pose-editor',f'https://github.com/camenduru/{sdw}-huggingface',f'https://github.com/camenduru/{sdw}-catppuccin',f'https://github.com/IDEA-Research/DWPose',f'https://github.com/KohakuBlueleaf/a1111-sd-{w}-lycoris',f'https://github.com/Physton/sd-{w}-prompt-all-in-one',]#line:144 for OOO0OO000OO000OOO in O0OO000O000O00O0O :#line:145 OO000OO00OOOOOO00 =OOO0OO000OO000OOO .split ('/')[-1 ]#line:147 if 'github'in OOO0OO000OO000OOO :#line:149 get_ipython ().system (f'git clone {OOO0OO000OO000OOO} {wb}/extensions/{OO000OO00OOOOOO00}')#line:150 get_ipython ().system (f'wget https://raw.githubusercontent.com/camenduru/{sdw}-scripts/main/run_n_times.py -O {wb}/scripts/run_n_times.py')#line:152 get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/embed/upscale/resolve/main/4x-UltraSharp.pth -d {wb}/models/ESRGAN -o 4x-UltraSharp.pth')#line:153 get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth -d {wb}/models/ESRGAN -o RealESRGAN_x4plus_anime_6B.pth')#line:154 gitDownload (f'https://huggingface.co/embed/negative',f'{wb}/embeddings/negative')#line:160 get_ipython ().system (f'rm -rf {wb}/embeddings/negative/.git')#line:161 get_ipython ().system (f'rm {wb}/embeddings/negative/.gitattributes')#line:162 gitDownload (f'https://huggingface.co/embed/lora',f'{wb}/models/Lora/positive')#line:164 get_ipython ().system (f'rm -rf {wb}/models/Lora/positive/.git')#line:165 get_ipython ().system (f'rm {wb}/models/Lora/positive/.gitattributes')#line:166 gitDownload (f'https://github.com/DominikDoom/a1111-sd-{w}-tagcomplete',f'{wb}/extensions/a1111-sd-{w}-tagcomplete')#line:169 get_ipython ().system (f'rm -f {wb}/extensions/a1111-sd-{w}-tagcomplete/tags/danbooru.csv')#line:170 get_ipython ().system (f'wget https://beehomefile.oss-cn-beijing.aliyuncs.com/20210114/danbooru.csv -O {wb}/extensions/a1111-sd-{w}-tagcomplete/tags/danbooru.csv')#line:171 gitDownload (f'https://github.com/toriato/{sdw}-wd14-tagger',f'{wb}/extensions/{sdw}-wd14-tagge')#line:172 gitDownload (f'https://github.com/Bing-su/adetailer',f'{wb}/extensions/adetailer')#line:178 gitDownload (f'https://github.com/antfu/sd-{w}-qrcode-toolkit',f'{wb}/extensions/sd-{w}-qrcode-toolkit')#line:179 gitDownload (f'https://github.com/yankooliveira/sd-{w}-photopea-embed',f'{wb}/extensions/sd-{w}-photopea-embed')#line:180 gitDownload (f'https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111',f'{wb}/extensions/multidiffusion-upscaler-for-automatic1111')#line:182 if Roop :#line:184 gitDownload (f'https://github.com/Gourieff/sd-{w}-reactor',f'{wb}/extensions/sd-{w}-reactor')#line:186 print ('Roop换脸启用')#line:188 else :#line:189 print ('Roop换脸不启用')#line:190 O0OO000OO00O0O0OO =['control_v11e_sd15_ip2p.pth','control_v11e_sd15_shuffle.pth','control_v11f1e_sd15_tile.pth','control_v11f1p_sd15_depth.pth','control_v11p_sd15_canny.pth','control_v11p_sd15_inpaint.pth','control_v11p_sd15_lineart.pth','control_v11p_sd15_mlsd.pth','control_v11p_sd15_normalbae.pth','control_v11p_sd15_openpose.pth','control_v11p_sd15_scribble.pth','control_v11p_sd15_seg.pth','control_v11p_sd15_softedge.pth','control_v11p_sd15s2_lineart_anime.pth',]#line:208 get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-controlnet')#line:209 if ControlNet =="Colab":#line:211 gitDownload (f'https://github.com/Mikubill/sd-{w}-controlnet',f'{wb}/extensions/sd-{w}-controlnet')#line:212 for O000000OO000O000O in O0OO000OO00O0O0OO :#line:213 get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/{O000000OO000O000O} -d {wb}/extensions/sd-{w}-controlnet/models -o {O000000OO000O000O}')#line:214 elif ControlNet =="Google_Drive":#line:217 cloudDriveSync (f'{gwb}/CntModels')#line:218 gitDownload (f'https://github.com/Mikubill/sd-{w}-controlnet',f'{wb}/extensions/sd-{w}-controlnet')#line:219 for O000000OO000O000O in O0OO000OO00O0O0OO :#line:220 if not os .path .exists (f'{gwb}/CntModels/{O000000OO000O000O}'):#line:221 get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/{O000000OO000O000O} -d {gwb}/CntModels -o {O000000OO000O000O}')#line:222 print ("创建扩展",f'{O000000OO000O000O}')#line:223 else :#line:224 print ("扩展存在",f'{O000000OO000O000O}')#line:225 for O000000OO000O000O in os .listdir (f'{gwb}/CntModels'):#line:227 get_ipython ().system (f'ln -s {gwb}/CntModels/{O000000OO000O000O} {wb}/extensions/sd-{w}-controlnet/models')#line:229 elif ControlNet =="No":#line:231 print ("不使用 ControlNet")#line:232 if UI =="Kitchen_Ui":#line:235 gitDownload (f'https://github.com/canisminor1990/sd-{w}-kitchen-theme-legacy',f'{wb}/extensions/sd-{w}-kitchen-theme-legacy')#line:236 print ("Kitchen界面插件启用")#line:237 elif UI =="Lobe_Ui":#line:238 gitDownload (f'https://github.com/canisminor1990/sd-web-ui-kitchen-theme',f'{wb}/extensions/sd-web-ui-kitchen-theme')#line:239 print ("Lobe界面插件启用")#line:240 elif UI =="No":#line:241 print ("UI插件不启用")#line:242 if Key_words :#line:245 cloudDriveSync (f'{gwb}/Storage',f'{wb}/extensions/sd-{w}-prompt-all-in-one/storage',Drive_Map )#line:246 print ("关键词插件启用")#line:247 else :#line:248 get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-prompt-all-in-one')#line:249 print ("关键词插件不启用")#line:250 if SadTalker :#line:253 if not os .path .exists (f'{wb}/extensions/SadTalker'):#line:254 get_ipython ().system (f'git clone https://github.com/OpenTalker/SadTalker {wb}/extensions/SadTalker')#line:255 get_ipython ().system (f'git -C {wb}/extensions/SadTalker clone https://huggingface.co/gmk123/checkpoints')#line:256 get_ipython ().system (f'git -C {wb}/models clone https://huggingface.co/gmk123/GFPGAN')#line:257 get_ipython ().system (f'git clone https://github.com/numz/sd-wav2lip-uhq {wb}/extensions/sd-wav2lip-uhq')#line:259 get_ipython ().system (f'wget https://huggingface.co/gmk123/wav2lip/resolve/main/wav2lip.pth -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/checkpoints/wav2lip.pth')#line:260 get_ipython ().system (f'wget https://huggingface.co/gmk123/wav2lip/resolve/main/wav2lip_gan.pth -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/checkpoints/wav2lip_gan.pth')#line:261 get_ipython ().system (f'wget https://huggingface.co/gmk123/wav2lip/resolve/main/s3fd-619a316812.pth -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/face_detection/detection/sfd/s3fd-619a316812.pth')#line:262 get_ipython ().system (f'wget https://huggingface.co/gmk123/wav2lip/resolve/main/shape_predictor_68_face_landmarks.dat -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/predicator/shape_predictor_68_face_landmarks.dat')#line:263 get_ipython ().system (f'wget https://huggingface.co/ezioruan/inswapper_128.onnx/resolve/main/inswapper_128.onnx -O {wb}/extensions/sd-wav2lip-uhq/scripts/faceswap/model/inswapper_128.onnx')#line:264 print ("SadTalker启用")#line:266 else :#line:267 get_ipython ().system (f'rm -rf {wb}/extensions/SadTalker')#line:268 print ("SadTalker不启用")#line:269 if Segment_Anything :#line:272 get_ipython ().system (f'git clone https://github.com/continue-revolution/sd-{w}-segment-anything {wb}/extensions/sd-{w}-segment-anything')#line:273 get_ipython ().system (f'wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth -O {wb}/extensions/sd-{w}-segment-anything/models/sam/sam_vit_l_0b3195.pth')#line:276 get_ipython ().system (f'wget https://huggingface.co/ShilongLiu/GroundingDINO/resolve/main/groundingdino_swinb_cogcoor.pth -O {wb}/extensions/sd-{w}-segment-anything/models/grounding-dino/groundingdino_swinb_cogcoor.pth')#line:277 print ("智能抠图插件启用")#line:289 else :#line:290 get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-segment-anything')#line:291 print ("智能抠图插件不启用")#line:292 def initLocal ():#line:295 get_ipython ().system (f'apt -y update -qq')#line:297 get_ipython ().system (f'wget https://huggingface.co/gmk123/sd_config/resolve/main/libtcmalloc_minimal.so.4 -O /content/libtcmalloc_minimal.so.4')#line:298 get_ipython ().run_line_magic ('env','LD_PRELOAD=/content/libtcmalloc_minimal.so.4')#line:299 get_ipython ().system (f'apt -y install -qq aria2 libcairo2-dev pkg-config python3-dev')#line:302 get_ipython ().system (f'pip install -q torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 torchtext==0.15.2 torchdata==0.6.1 --extra-index-url https://download.pytorch.org/whl/cu118 -U')#line:303 get_ipython ().system (f'pip install -q xformers==0.0.20 triton==2.0.0 gradio_client==0.2.7 -U')#line:304 if Version =="A1111":#line:307 get_ipython ().system (f'git clone -b master https://github.com/AUTOMATIC1111/{sdw} {wb}')#line:308 elif Version =="V2.5":#line:309 get_ipython ().system (f'git clone -b v2.5 https://github.com/camenduru/{sdw} {wb}')#line:310 elif Version =="V2.4":#line:311 get_ipython ().system (f'git clone -b v2.4 https://github.com/camenduru/{sdw} {wb}')#line:312 get_ipython ().system (f'git -C {wb}/repositories/stable-diffusion-stability-ai reset --hard')#line:314 initCloudDrive ()#line:317 installAdditional ()#line:320 get_ipython ().system (f'rm -f {wb}/config.json')#line:323 get_ipython ().system (f'ln -s {gwb}/Config/config.json {wb}/config.json')#line:326 if os .path .exists (f"{gwb}/styles.csv"):#line:329 get_ipython ().system (f'ln -s {gwb}/styles.csv {wb}/styles.csv')#line:330 if os .path .exists (f"{wb}/extensions/sd-{w}-additional-networks"):#line:333 cloudDriveSync (f'{gwb}/Lora',f'{wb}/extensions/sd-{w}-additional-networks/models/lora',Drive_Map )#line:334 if len (os .listdir (f"{gwb}/Models"))==0 :#line:338 get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/ckpt/chilloutmix/resolve/main/chilloutmix_NiPrunedFp32Fix.safetensors -d {wb}/models/Stable-diffusion -o chilloutmix_NiPrunedFp32Fix.safetensors')#line:340 if len (os .listdir (f"{gwb}/Vae"))==0 :#line:343 get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -d {wb}/models/VAE -o vae-ft-mse-840000-ema-pruned.safetensors')#line:345 get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/embed/upscale/resolve/main/4x-UltraSharp.pth -d {wb}/models/ESRGAN -o 4x-UltraSharp.pth')#line:348 OOOO000O000OOOOOO =os .path .join (wb ,"models","Stable-diffusion")#line:350 if any (OOOOOOO0O0OO0O0OO .endswith (('.ckpt','.safetensors'))for OOOOOOO0O0OO0O0OO in os .listdir (OOOO000O000OOOOOO )):#line:351 get_ipython ().system (f'sed -i \'s@weight_load_location =.*@weight_load_location = "cuda"@\' {wb}/modules/shared.py')#line:352 get_ipython ().system (f'sed -i "s@os.path.splitext(model_file)@os.path.splitext(model_file); map_location=\'cuda\'@" {wb}/modules/sd_models.py')#line:353 get_ipython ().system (f'sed -i "s@map_location=\'cpu\'@map_location=\'cuda\'@" {wb}/modules/extras.py')#line:354 get_ipython ().system (f"sed -i 's@ui.create_ui().*@ui.create_ui();shared.demo.queue(concurrency_count=999999,status_update_rate=0.1)@' {wb}/webui.py")#line:355 def run (O0OO0OO0OOOOO0O0O ):#line:358 clear_output ()#line:359 get_ipython ().run_line_magic ('cd',f'{wb}')#line:360 get_ipython ().system (f'python {O0OO0OO0OOOOO0O0O} --listen --xformers --enable-insecure-extension-access --theme dark --gradio-queue --no-half-vae --disable-console-progressbars --multiple --api --cors-allow-origins=*')#line:361 if os .path .exists (f'{wb}'):#line:364 run ('webui.py')#line:365 else :#line:366 initLocal ()#line:368 run ('launch.py')