File size: 4,592 Bytes
26cdd88 a3d898e 5ad440e a3d898e 5ad440e a3d898e a714fc0 a3d898e db8b6d3 a3d898e 626caba 7e4ef02 a3d898e fdc7ba2 a3d898e fdc7ba2 a3d898e 90c2ce3 a3d898e db8b6d3 a3d898e 67e8fdb afae1b4 5ad440e 7e4ef02 afae1b4 7e4ef02 afae1b4 7e4ef02 5ad440e a3d898e 047211d afae1b4 9b1f46f afae1b4 a3d898e db8b6d3 7e4ef02 67e8fdb 5ad440e a3d898e 5ad440e 7e4ef02 5ad440e 67e8fdb db8b6d3 fca9e7a c4a53cf db8b6d3 7e4ef02 67e8fdb a3d898e 5ad440e b224904 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
##~ LAUNCH CODE | BY: ANXETY ~##
import os
import re
import time
import json
import requests
import cloudpickle as pickle
from datetime import timedelta
from IPython.display import clear_output
# ================= DETECT ENV =================
def detect_environment():
free_plan = (os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES') / (1024 ** 3) <= 20)
environments = {
'COLAB_GPU': ('Google Colab', "/root" if free_plan else "/content"),
'KAGGLE_URL_BASE': ('Kaggle', "/kaggle/working/content")
}
for env_var, (environment, path) in environments.items():
if env_var in os.environ:
return environment, path, free_plan
env, root_path, free_plan = detect_environment()
webui_path = f"{root_path}/sdw"
# ----------------------------------------------
def load_settings():
SETTINGS_FILE = f'{root_path}/settings.json'
if os.path.exists(SETTINGS_FILE):
with open(SETTINGS_FILE, 'r') as f:
settings = json.load(f)
return settings
settings = load_settings()
ngrok_token = settings['ngrok_token']
zrok_token = settings['zrok_token']
commandline_arguments = settings['commandline_arguments']
change_webui = settings['change_webui']
# ======================== TUNNEL V2 ========================
print('Please Wait...')
def get_public_ip(version='ipv4'):
try:
url = f'https://api64.ipify.org?format=json&{version}=true'
response = requests.get(url)
data = response.json()
public_ip = data['ip']
return public_ip
except Exception as e:
print(f"Error getting public {version} address:", e)
# Check if public IP is already saved, if not then get it
try:
with open(f"{root_path}/public_ip.txt", "r") as file:
public_ipv4 = file.read().strip()
except FileNotFoundError:
public_ipv4 = get_public_ip(version='ipv4')
with open(f"{root_path}/public_ip.txt", "w") as file:
file.write(public_ipv4)
tunnel_class = pickle.load(open(f"{root_path}/new_tunnel", "rb"), encoding="utf-8")
tunnel_port = 1734
tunnel = tunnel_class(tunnel_port)
tunnel.add_tunnel(command="cl tunnel --url localhost:{port}", name="cl", pattern=re.compile(r"[\w-]+\.trycloudflare\.com"))
tunnel.add_tunnel(command="lt --port {port}", name="lt", pattern=re.compile(r"[\w-]+\.loca\.lt"), note="Password : " + "\033[32m" + public_ipv4 + "\033[0m" + " rerun cell if 404 error.")
''' add zrok tunnel '''
if zrok_token:
get_ipython().system('zrok enable {zrok_token} &> /dev/null')
tunnel.add_tunnel(command="zrok share public http://localhost:{port}/ --headless", name="zrok", pattern=re.compile(r"[\w-]+\.share\.zrok\.io"))
clear_output()
# =============== Automatic Fixing Path V3 ===============
paths_to_check = [
("tagger_hf_cache_dir", f"{webui_path}/models/interrogators/"),
("additional_networks_extra_lora_path", f"{webui_path}/models/Lora/"),
("ad_extra_models_dir", f"{webui_path}/models/adetailer/"),
("sd_checkpoint_hash", ""),
("sd_model_checkpoint", ""),
("sd_vae", "None")
]
config_path = f'{webui_path}/ui-config.json'
with open(config_path, 'r') as file:
config_data = json.load(file)
for key, value in paths_to_check:
if key in config_data and config_data[key] != value:
sed_command = f"sed -i 's|\"{key}\": \".*\"|\"{key}\": \"{value}\"|' {config_path}"
os.system(sed_command)
# Additional check for Kaggle
if env == 'Kaggle':
get_ipython().system('sed -i \'s/"civitai_interface\\/NSFW content\\/value":.*/"civitai_interface\\/NSFW content\\/value": false/g\' {webui_path}/ui-config.json')
# -------------------------------------------------------
with tunnel:
get_ipython().run_line_magic('cd', '{webui_path}')
commandline_arguments += f' --port={tunnel_port}'
if ngrok_token:
commandline_arguments += f' --ngrok {ngrok_token}'
if env != "Google Colab":
commandline_arguments += f' --encrypt-pass={tunnel_port} --api'
# -- FORGE --
if change_webui == 'Forge':
commandline_arguments += ' --cuda-stream --pin-shared-memory'
get_ipython().system('COMMANDLINE_ARGS="{commandline_arguments}" python launch.py')
# after runnig
start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())
time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]
print(f"\n⌚️ \033[0mВы проводите эту сессию в течение - \033[33m{time_since_start}\033[0m\n\n")
''' del zrok tunnel '''
if zrok_token:
get_ipython().system('zrok disable &> /dev/null')
|