File size: 4,309 Bytes
cb7de7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env python
# coding: utf-8

# In[ ]:


##~   LAUNCH CODE | BY: ANXETY   ~##

import os
import re
import time
import json
import requests
from datetime import timedelta


#  ================= DETECT ENV =================
def detect_environment():
    environments = {
        'COLAB_GPU': ('Google Colab', "/content"),
        'KAGGLE_URL_BASE': ('Kaggle', "/kaggle/working/content"),
        'SAGEMAKER_INTERNAL_IMAGE_URI': ('SageMaker Studio Lab', "/home/studio-lab-user/content")
    }

    for env_var, (environment, path) in environments.items():
        if env_var in os.environ:
            return environment, path

env, root_path = 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']
commandline_arguments = settings['commandline_arguments']


# ======================== TUNNEL ========================
if env != "SageMaker Studio Lab":
    import cloudpickle as pickle

    password = "x1101"
    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)

    public_ipv4 = get_public_ip(version='ipv4')

    tunnel_class = pickle.load(open(f"{root_path}/new_tunnel", "rb"), encoding="utf-8")
    tunnel_port= 1101
    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.")
# ======================== TUNNEL ========================


# automatic fixing path V2
get_ipython().system('sed -i \'s#"tagger_hf_cache_dir": ".*models/interrogators"#"tagger_hf_cache_dir": "{root_path}/sdw/models/interrogators"#\' {webui_path}/config.json')
get_ipython().system('sed -i \'s#"additional_networks_extra_lora_path": ".*models/Lora/"#"additional_networks_extra_lora_path": "{root_path}/sdw/models/Lora/"#\' {webui_path}/config.json')
# ---
get_ipython().system('sed -i \'s/"sd_checkpoint_hash": ".*"/"sd_checkpoint_hash": ""/g; s/"sd_model_checkpoint": ".*"/"sd_model_checkpoint": ""/g; s/"sd_vae": ".*"/"sd_vae": "None"/g\' {webui_path}/config.json')


if env != "SageMaker Studio Lab":
    with tunnel:
        get_ipython().system('#python -m http.server 1101')
        get_ipython().run_line_magic('cd', '{webui_path}')

        if ngrok_token:
            commandline_arguments += ' --ngrok ' + ngrok_token
        commandline_arguments += f" --port=1101 --encrypt-pass=1769" #  --encrypt-pass={password}

        get_ipython().system('COMMANDLINE_ARGS="{commandline_arguments}" python launch.py')

        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[0mYou have been conducting this session for - \033[33m{time_since_start}\033[0m\n\n")

else:
    if ngrok_token:
        get_ipython().run_line_magic('cd', '{webui_path}')

        commandline_arguments += ' --ngrok ' + ngrok_token

        get_ipython().system('COMMANDLINE_ARGS="{commandline_arguments}" python launch.py')

        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[0mYou have been conducting this session for - \033[33m{time_since_start}\033[0m\n\n")

    else:
        print("Oops... I think you forgot to insert the token `ngrok`..... go back to widgets and insert it to start webui... no way without it :/\nYou can get the token here:\n\nhttps://dashboard.ngrok.com/get-started/your-authtoken")