File size: 6,509 Bytes
70d8ee9 f6827c1 70d8ee9 1c907cb ee7e1de 70d8ee9 1c907cb f6827c1 70d8ee9 f6827c1 960a275 f6827c1 70d8ee9 1c907cb f6827c1 70d8ee9 f6827c1 70d8ee9 a3d898e |
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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "JKTCrY9LU7Oq"
},
"outputs": [],
"source": [
"##~ LAUNCH CODE | BY: ANXETY ~##\n",
"\n",
"import os\n",
"import re\n",
"import time\n",
"import json\n",
"import requests\n",
"import subprocess\n",
"import cloudpickle as pickle\n",
"from datetime import timedelta\n",
"from IPython.display import clear_output\n",
"\n",
"\n",
"# Setup Env\n",
"env = os.getenv('ENV_NAME')\n",
"root_path = os.getenv('ROOT_PATH')\n",
"webui_path = os.getenv('WEBUI_PATH')\n",
"free_plan = os.getenv('FREE_PLAN')\n",
"\n",
"\n",
"def load_settings():\n",
" SETTINGS_FILE = f'{root_path}/settings.json'\n",
" if os.path.exists(SETTINGS_FILE):\n",
" with open(SETTINGS_FILE, 'r') as f:\n",
" return json.load(f)\n",
" return {}\n",
"\n",
"settings = load_settings()\n",
"ngrok_token = settings.get('ngrok_token', \"\")\n",
"zrok_token = settings.get('zrok_token', \"\")\n",
"commandline_arguments = settings.get('commandline_arguments', \"\")\n",
"change_webui = settings.get('change_webui', \"\")\n",
"\n",
"\n",
"# ========================== OTHER ==========================\n",
"def is_package_installed(package_name):\n",
" try:\n",
" subprocess.run([\"npm\", \"ls\", \"-g\", package_name], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n",
" return True\n",
" except subprocess.CalledProcessError:\n",
" return False\n",
"\n",
"lt_tunnel = is_package_installed('localtunnel')\n",
"\n",
"\n",
"# ======================== TUNNEL V2 ========================\n",
"print('Please Wait...')\n",
"\n",
"def get_public_ip(version='ipv4'):\n",
" try:\n",
" url = f'https://api64.ipify.org?format=json&{version}=true'\n",
" response = requests.get(url)\n",
" return response.json().get('ip', 'N/A')\n",
" except Exception as e:\n",
" print(f\"Error getting public {version} address:\", e)\n",
"\n",
"# Check if public IP is already saved, if not then get it\n",
"public_ip_file = f\"{root_path}/public_ip.txt\"\n",
"if os.path.exists(public_ip_file):\n",
" with open(public_ip_file, 'r') as file:\n",
" public_ipv4 = file.read().strip()\n",
"else:\n",
" public_ipv4 = get_public_ip(version='ipv4')\n",
" with open(public_ip_file, 'w') as file:\n",
" file.write(public_ipv4)\n",
"\n",
"tunnel_class = pickle.load(open(f\"{root_path}/new_tunnel\", \"rb\"), encoding=\"utf-8\")\n",
"tunnel_port = 1834\n",
"tunnel = tunnel_class(tunnel_port)\n",
"tunnel.add_tunnel(command=\"cl tunnel --url localhost:{port}\", name=\"cl\", pattern=re.compile(r\"[\\w-]+\\.trycloudflare\\.com\"))\n",
"\n",
"tunnel.add_tunnel(command=\"ssh -o StrictHostKeyChecking=no -p 80 -R0:localhost:{port} a.pinggy.io\", name=\"pinngy\", pattern=re.compile(r\"[\\w-]+\\.a\\.free\\.pinggy\\.link\"))\n",
"\n",
"if lt_tunnel:\n",
" 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.\")\n",
"\n",
"if zrok_token:\n",
" !zrok enable {zrok_token} &> /dev/null\n",
" tunnel.add_tunnel(command=\"zrok share public http://localhost:{port}/ --headless\", name=\"zrok\", pattern=re.compile(r\"[\\w-]+\\.share\\.zrok\\.io\"))\n",
"\n",
"clear_output()\n",
"\n",
"\n",
"# ================= Automatic Fixing Path V3 ================\n",
"paths_to_check = {\n",
" \"tagger_hf_cache_dir\": f\"{webui_path}/models/interrogators/\",\n",
" \"ad_extra_models_dir\": f\"{webui_path}/models/adetailer/\",\n",
" \"sd_checkpoint_hash\": \"\",\n",
" \"sd_model_checkpoint\": \"\",\n",
" \"sd_vae\": \"None\"\n",
"}\n",
"\n",
"config_path = f'{webui_path}/config.json'\n",
"\n",
"if os.path.exists(config_path):\n",
" with open(config_path, 'r') as file:\n",
" config_data = json.load(file)\n",
"\n",
" for key, value in paths_to_check.items():\n",
" if key in config_data and config_data[key] != value:\n",
" sed_command = f\"sed -i 's|\\\"{key}\\\": \\\".*\\\"|\\\"{key}\\\": \\\"{value}\\\"|' {config_path}\"\n",
" os.system(sed_command)\n",
"\n",
"\n",
"with tunnel:\n",
" %cd {webui_path}\n",
"\n",
" commandline_arguments += f' --port={tunnel_port}'\n",
" if ngrok_token:\n",
" commandline_arguments += f' --ngrok {ngrok_token}'\n",
" if env != \"Google Colab\":\n",
" commandline_arguments += f' --encrypt-pass={tunnel_port} --api'\n",
"\n",
" if change_webui == 'A1111':\n",
" commandline_arguments += ' --xformers'\n",
" else:\n",
" commandline_arguments += ' --disable-xformers --opt-sdp-attention --cuda-stream --pin-shared-memory'\n",
"\n",
" !COMMANDLINE_ARGS=\"{commandline_arguments}\" python launch.py\n",
"\n",
"start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())\n",
"time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]\n",
"print(f\"\\n⌚️ \\033[0mВы проводите эту сессию в течение - \\033[33m{time_since_start}\\033[0m\\n\\n\")\n",
"\n",
"if zrok_token:\n",
" !zrok disable &> /dev/null"
]
}
]
} |