import argparse #line:1 import binascii #line:2 def str_to_bool (OOOO0OO0OO0O000O0 ):#line:5 if OOOO0OO0OO0O000O0 .lower ()in ('yes','true','t','y','1'):#line:6 return True #line:7 elif OOOO0OO0OO0O000O0 .lower ()in ('no','false','f','n','0'):#line:8 return False #line:9 else :#line:10 raise argparse .ArgumentTypeError ('Invalid boolean value: {}'.format (OOOO0OO0OO0O000O0 ))#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 l =base64 .b64decode (("bGF1bmNo").encode ('ascii')).decode ('ascii')#line:58 sdw =base64 .b64decode (("c3RhYmxlLWRpZmZ1c2lvbi13ZWJ1aQ==").encode ('ascii')).decode ('ascii')#line:59 wb =f'/root/main'#line:62 sai =base64 .b64decode (("c3RhYmxlLWRpZmZ1c2lvbi1zdGFiaWxpdHktYWk=").encode ('ascii')).decode ('ascii')#line:63 sd =base64 .b64decode (("U3RhYmxlLWRpZmZ1c2lvbg==").encode ('ascii')).decode ('ascii')#line:64 gwb =f'/content/drive/MyDrive/SD_DATA'#line:65 get_ipython ().run_line_magic ('cd','/content')#line:67 get_ipython ().run_line_magic ('env','TF_CPP_MIN_LOG_LEVEL=1')#line:68 def cloudDriveSync (O0O00O0OOOO0OOOOO ,O00O0O0O0O0OOOO0O ='',OOOOO0OO0O000O000 =False ):#line:71 if not os .path .exists (O0O00O0OOOO0OOOOO ):#line:73 get_ipython ().system (f'mkdir {O0O00O0OOOO0OOOOO}')#line:75 if not OOOOO0OO0O000O000 :#line:78 return #line:79 get_ipython ().system (f'rm -rf {O00O0O0O0O0OOOO0O}')#line:82 get_ipython ().system (f'ln -s {O0O00O0OOOO0OOOOO} {O00O0O0O0O0OOOO0O}')#line:84 def initCloudDrive ():#line:87 cloudDriveSync (f'{gwb}')#line:88 cloudDriveSync (f'{gwb}/Config')#line:89 cloudDriveSync (f'{gwb}/Models',f'{wb}/models/{sd}',Drive_Map )#line:90 cloudDriveSync (f'{gwb}/Lora',f'{wb}/models/Lora',Drive_Map )#line:91 cloudDriveSync (f'{gwb}/LyCORIS',f'{wb}/models/LyCORIS',Drive_Map )#line:92 cloudDriveSync (f'{gwb}/hypernetworks',f'{wb}/models/hypernetworks',Drive_Map )#line:93 cloudDriveSync (f'{gwb}/Vae',f'{wb}/models/VAE',Drive_Map )#line:94 cloudDriveSync (f'{gwb}/Outputs',f'{wb}/outputs',Drive_Map )#line:95 if not os .path .exists (f'{gwb}/Config/config.json'):#line:99 get_ipython ().system (f'wget -O {gwb}/Config/config.json "https://huggingface.co/wageguagua/main/raw/main/config.json"')#line:100 if not os .path .exists (f'{gwb}/styles.csv'):#line:102 get_ipython ().system (f'wget -O {gwb}/styles.csv "https://huggingface.co/wageguagua/main/raw/main/styles.csv"')#line:104 def gitDownload (O00O0OOO00OO000OO ,O0000OOOO0O0OO000 ):#line:107 if os .path .exists (O0000OOOO0O0OO000 ):#line:108 return #line:109 get_ipython ().system (f'git clone {O00O0OOO00OO000OO} {O0000OOOO0O0OO000}')#line:111 def installAdditional ():#line:114 O0O00000OO0OOO0O0 =[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:147 for OOO00O0000OOOOO0O in O0O00000OO0OOO0O0 :#line:148 OOO0OO0O0OO0O0OOO =OOO00O0000OOOOO0O .split ('/')[-1 ]#line:150 if 'github'in OOO00O0000OOOOO0O :#line:152 get_ipython ().system (f'git clone {OOO00O0000OOOOO0O} {wb}/extensions/{OOO0OO0O0OO0O0OOO}')#line:153 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:155 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:156 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:157 gitDownload (f'https://huggingface.co/embed/negative',f'{wb}/embeddings/negative')#line:163 get_ipython ().system (f'rm -rf {wb}/embeddings/negative/.git')#line:164 get_ipython ().system (f'rm {wb}/embeddings/negative/.gitattributes')#line:165 gitDownload (f'https://huggingface.co/embed/lora',f'{wb}/models/Lora/positive')#line:167 get_ipython ().system (f'rm -rf {wb}/models/Lora/positive/.git')#line:168 get_ipython ().system (f'rm {wb}/models/Lora/positive/.gitattributes')#line:169 gitDownload (f'https://github.com/DominikDoom/a1111-sd-{w}-tagcomplete',f'{wb}/extensions/a1111-sd-{w}-tagcomplete')#line:172 get_ipython ().system (f'rm -f {wb}/extensions/a1111-sd-{w}-tagcomplete/tags/danbooru.csv')#line:173 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:174 gitDownload (f'https://github.com/toriato/{sdw}-wd14-tagger',f'{wb}/extensions/{sdw}-wd14-tagge')#line:175 gitDownload (f'https://github.com/Bing-su/adetailer',f'{wb}/extensions/adetailer')#line:181 gitDownload (f'https://github.com/antfu/sd-{w}-qrcode-toolkit',f'{wb}/extensions/sd-{w}-qrcode-toolkit')#line:182 gitDownload (f'https://github.com/yankooliveira/sd-{w}-photopea-embed',f'{wb}/extensions/sd-{w}-photopea-embed')#line:183 gitDownload (f'https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111',f'{wb}/extensions/multidiffusion-upscaler-for-automatic1111')#line:185 if Roop :#line:187 gitDownload (f'https://github.com/Gourieff/sd-{w}-reactor',f'{wb}/extensions/sd-{w}-reactor')#line:189 print ('Roop换脸启用')#line:191 else :#line:192 print ('Roop换脸不启用')#line:193 O0OOOO00O0O00O0OO =['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:211 get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-controlnet')#line:212 if ControlNet =="Colab":#line:214 gitDownload (f'https://github.com/Mikubill/sd-{w}-controlnet',f'{wb}/extensions/sd-{w}-controlnet')#line:215 for OOO0000OOOO0OO0OO in O0OOOO00O0O00O0OO :#line:216 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/{OOO0000OOOO0OO0OO} -d {wb}/extensions/sd-{w}-controlnet/models -o {OOO0000OOOO0OO0OO}')#line:217 elif ControlNet =="Google_Drive":#line:220 cloudDriveSync (f'{gwb}/CntModels')#line:221 gitDownload (f'https://github.com/Mikubill/sd-{w}-controlnet',f'{wb}/extensions/sd-{w}-controlnet')#line:222 for OOO0000OOOO0OO0OO in O0OOOO00O0O00O0OO :#line:223 if not os .path .exists (f'{gwb}/CntModels/{OOO0000OOOO0OO0OO}'):#line:224 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/{OOO0000OOOO0OO0OO} -d {gwb}/CntModels -o {OOO0000OOOO0OO0OO}')#line:225 print ("创建扩展",f'{OOO0000OOOO0OO0OO}')#line:226 else :#line:227 print ("扩展存在",f'{OOO0000OOOO0OO0OO}')#line:228 for OOO0000OOOO0OO0OO in os .listdir (f'{gwb}/CntModels'):#line:230 get_ipython ().system (f'ln -s {gwb}/CntModels/{OOO0000OOOO0OO0OO} {wb}/extensions/sd-{w}-controlnet/models')#line:232 elif ControlNet =="No":#line:234 print ("不使用 ControlNet")#line:235 if UI =="Kitchen_Ui":#line:238 gitDownload (f'https://github.com/canisminor1990/sd-{w}-kitchen-theme-legacy',f'{wb}/extensions/sd-{w}-kitchen-theme-legacy')#line:239 print ("Kitchen界面插件启用")#line:240 elif UI =="Lobe_Ui":#line:241 gitDownload (f'https://github.com/canisminor1990/sd-web-ui-kitchen-theme',f'{wb}/extensions/sd-web-ui-kitchen-theme')#line:242 print ("Lobe界面插件启用")#line:243 elif UI =="No":#line:244 print ("UI插件不启用")#line:245 if Key_words :#line:248 cloudDriveSync (f'{gwb}/Storage',f'{wb}/extensions/sd-{w}-prompt-all-in-one/storage',Drive_Map )#line:249 print ("关键词插件启用")#line:250 else :#line:251 get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-prompt-all-in-one')#line:252 print ("关键词插件不启用")#line:253 if SadTalker :#line:256 if not os .path .exists (f'{wb}/extensions/SadTalker'):#line:257 get_ipython ().system (f'git clone https://github.com/OpenTalker/SadTalker {wb}/extensions/SadTalker')#line:258 get_ipython ().system (f'git -C {wb}/extensions/SadTalker clone https://huggingface.co/wageguagua/checkpoints')#line:259 get_ipython ().system (f'git -C {wb}/models clone https://huggingface.co/wageguagua/GFPGAN')#line:260 get_ipython ().system (f'git clone https://github.com/numz/sd-wav2lip-uhq {wb}/extensions/sd-wav2lip-uhq')#line:262 get_ipython ().system (f'wget https://huggingface.co/wageguagua/wav2lip/resolve/main/wav2lip.pth -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/checkpoints/wav2lip.pth')#line:263 get_ipython ().system (f'wget https://huggingface.co/wageguagua/wav2lip/resolve/main/wav2lip_gan.pth -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/checkpoints/wav2lip_gan.pth')#line:264 get_ipython ().system (f'wget https://huggingface.co/wageguagua/wav2lip/resolve/main/s3fd-619a316812.pth -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/face_detection/detection/sfd/s3fd-619a316812.pth')#line:265 get_ipython ().system (f'wget https://huggingface.co/wageguagua/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:266 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:267 print ("SadTalker启用")#line:269 else :#line:270 get_ipython ().system (f'rm -rf {wb}/extensions/SadTalker')#line:271 print ("SadTalker不启用")#line:272 if Segment_Anything :#line:275 get_ipython ().system (f'git clone https://github.com/continue-revolution/sd-{w}-segment-anything {wb}/extensions/sd-{w}-segment-anything')#line:276 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:279 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:280 print ("智能抠图插件启用")#line:292 else :#line:293 get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-segment-anything')#line:294 print ("智能抠图插件不启用")#line:295 def initLocal ():#line:298 get_ipython ().system (f'apt -y update -qq')#line:300 get_ipython ().system (f'wget https://huggingface.co/wageguagua/sd_config/resolve/main/libtcmalloc_minimal.so.4 -O /content/libtcmalloc_minimal.so.4')#line:301 get_ipython ().run_line_magic ('env','LD_PRELOAD=/content/libtcmalloc_minimal.so.4')#line:302 get_ipython ().system (f'apt -y install -qq aria2 libcairo2-dev pkg-config python3-dev')#line:305 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:306 get_ipython ().system (f'pip install -q xformers==0.0.20 triton==2.0.0 -U')#line:307 if Version =="A1111":#line:310 get_ipython ().system (f'git clone -b v2.5 https://github.com/camenduru/{sdw} {wb}')#line:311 elif Version =="V2.5":#line:312 get_ipython ().system (f'git clone -b v2.5 https://github.com/camenduru/{sdw} {wb}')#line:313 elif Version =="V2.4":#line:314 get_ipython ().system (f'git clone -b v2.4 https://github.com/camenduru/{sdw} {wb}')#line:315 get_ipython ().system (f'git -C {wb}/repositories/{sai} reset --hard')#line:317 initCloudDrive ()#line:320 installAdditional ()#line:323 get_ipython ().system (f'rm -f {wb}/config.json')#line:326 get_ipython ().system (f'ln -s {gwb}/Config/config.json {wb}/config.json')#line:329 if os .path .exists (f"{gwb}/styles.csv"):#line:332 get_ipython ().system (f'ln -s {gwb}/styles.csv {wb}/styles.csv')#line:333 if os .path .exists (f"{wb}/extensions/sd-{w}-additional-networks"):#line:336 cloudDriveSync (f'{gwb}/Lora',f'{wb}/extensions/sd-{w}-additional-networks/models/lora',Drive_Map )#line:337 if len (os .listdir (f"{gwb}/Models"))==0 :#line:340 #(注意注意!!!下方替换模型) 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/{sd} -o chilloutmix_NiPrunedFp32Fix.safetensors')#line:342 if len (os .listdir (f"{gwb}/Vae"))==0 :#line:345 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:347 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:350 def run (O0O00OOOOO000O000 ):#line:360 clear_output ()#line:361 get_ipython ().run_line_magic ('cd',f'{wb}')#line:362 get_ipython ().system (f'python {O0O00OOOOO000O000} --share --api --disable-safe-unpickle --enable-insecure-extension-access --no-download-sd-model --no-half-vae --xformers --disable-console-progressbars --theme dark --cors-allow-origins=*')#line:363 if os .path .exists (f'{wb}'):#line:366 run (f'{w}.py')#line:367 else :#line:368 initLocal ()#line:370 run (f'{l}.py')