File size: 7,953 Bytes
41fcedb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
155
156
157
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "41c4f308-b68a-46b3-8ae7-1c7d46c981e4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--2023-02-06 09:16:04--  https://huggingface.co/syaimu/7th_Layer/resolve/main/7th_anime_v3/7th_anime_v3_A.safetensors\n",
      "Resolving huggingface.co (huggingface.co)... 3.231.67.228, 54.235.118.239, 2600:1f18:147f:e800:671:b733:ecf3:a585, ...\n",
      "Connecting to huggingface.co (huggingface.co)|3.231.67.228|:443... connected.\n",
      "HTTP request sent, awaiting response... 302 Found\n",
      "Location: https://cdn-lfs.huggingface.co/repos/0c/8c/0c8c3a139a854a317f227f1f1c2f695f4e7f15fa728359e39f1b6085d4c23d36/c330a60ddcb49c61109dbd7c28cf326733dadb77984c6e8d162bdc200a05df9e?response-content-disposition=attachment%3B+filename*%3DUTF-8%27%277th_anime_v3_A.safetensors%3B+filename%3D%227th_anime_v3_A.safetensors%22%3B&Expires=1675933915&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9jZG4tbGZzLmh1Z2dpbmdmYWNlLmNvL3JlcG9zLzBjLzhjLzBjOGMzYTEzOWE4NTRhMzE3ZjIyN2YxZjFjMmY2OTVmNGU3ZjE1ZmE3MjgzNTllMzlmMWI2MDg1ZDRjMjNkMzYvYzMzMGE2MGRkY2I0OWM2MTEwOWRiZDdjMjhjZjMyNjczM2RhZGI3Nzk4NGM2ZThkMTYyYmRjMjAwYTA1ZGY5ZT9yZXNwb25zZS1jb250ZW50LWRpc3Bvc2l0aW9uPSoiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE2NzU5MzM5MTV9fX1dfQ__&Signature=WLQ4Kifv-3QwBHonSdrZOx7Ef0Z0iyV6danwso-DE2jaEj7JckLyYtMjhTLbjAHhULHsx-MZTrqnWFweXxg2%7E0Qg0zKwcA-UNYGcsPisO8jr2CHLkWvEhcB53cBZhSYktnzOKHt75M837DG6-IyDePIYjlSLcYRTQRRPWM3WrQB2GkRGUVdo6tfOW4wOBld%7ELB2FE--NIABzhm0WJoCQ-%7E23QYayFAn%7ELB5yZJvbBTcKiJmljZg8BRhwVrEsIWjVdRrna4yl3TXe6Dv-qCjJvtu%7Eit9BehWAjmhCCN1jsiowo51UcOeElvGuVz9gs-c4XAOv8ZH2GBYzPkNHvsBFAg__&Key-Pair-Id=KVTP0A1DKRTAX [following]\n",
      "--2023-02-06 09:16:05--  https://cdn-lfs.huggingface.co/repos/0c/8c/0c8c3a139a854a317f227f1f1c2f695f4e7f15fa728359e39f1b6085d4c23d36/c330a60ddcb49c61109dbd7c28cf326733dadb77984c6e8d162bdc200a05df9e?response-content-disposition=attachment%3B+filename*%3DUTF-8%27%277th_anime_v3_A.safetensors%3B+filename%3D%227th_anime_v3_A.safetensors%22%3B&Expires=1675933915&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9jZG4tbGZzLmh1Z2dpbmdmYWNlLmNvL3JlcG9zLzBjLzhjLzBjOGMzYTEzOWE4NTRhMzE3ZjIyN2YxZjFjMmY2OTVmNGU3ZjE1ZmE3MjgzNTllMzlmMWI2MDg1ZDRjMjNkMzYvYzMzMGE2MGRkY2I0OWM2MTEwOWRiZDdjMjhjZjMyNjczM2RhZGI3Nzk4NGM2ZThkMTYyYmRjMjAwYTA1ZGY5ZT9yZXNwb25zZS1jb250ZW50LWRpc3Bvc2l0aW9uPSoiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE2NzU5MzM5MTV9fX1dfQ__&Signature=WLQ4Kifv-3QwBHonSdrZOx7Ef0Z0iyV6danwso-DE2jaEj7JckLyYtMjhTLbjAHhULHsx-MZTrqnWFweXxg2%7E0Qg0zKwcA-UNYGcsPisO8jr2CHLkWvEhcB53cBZhSYktnzOKHt75M837DG6-IyDePIYjlSLcYRTQRRPWM3WrQB2GkRGUVdo6tfOW4wOBld%7ELB2FE--NIABzhm0WJoCQ-%7E23QYayFAn%7ELB5yZJvbBTcKiJmljZg8BRhwVrEsIWjVdRrna4yl3TXe6Dv-qCjJvtu%7Eit9BehWAjmhCCN1jsiowo51UcOeElvGuVz9gs-c4XAOv8ZH2GBYzPkNHvsBFAg__&Key-Pair-Id=KVTP0A1DKRTAX\n",
      "Resolving cdn-lfs.huggingface.co (cdn-lfs.huggingface.co)... 99.86.63.67, 99.86.63.91, 99.86.63.37, ...\n",
      "Connecting to cdn-lfs.huggingface.co (cdn-lfs.huggingface.co)|99.86.63.67|:443... connected.\n",
      "HTTP request sent, awaiting response... 200 OK\n",
      "Length: 4265096689 (4.0G) [binary/octet-stream]\n",
      "Saving to: ‘/workspace/stable-diffusion-webui/models/Stable-diffusion/7th_anime_v3_A.safetensors’\n",
      "\n",
      "7th_anime_v3_A.safe 100%[===================>]   3.97G   189MB/s    in 23s     \n",
      "\n",
      "2023-02-06 09:16:28 (174 MB/s) - ‘/workspace/stable-diffusion-webui/models/Stable-diffusion/7th_anime_v3_A.safetensors’ saved [4265096689/4265096689]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# ------------------------------------------------\n",
    "# 다운로드할 모델의 URL\n",
    "model_urls = '''\n",
    "다운받을 모델 링크를 여기에 넣어주세요.\n",
    "'''\n",
    "\n",
    "vae_urls = '''\n",
    "다운받을 vae 링크를 여기에 넣어주세요.\n",
    "'''\n",
    "\n",
    "lora_urls = '''\n",
    "다운받을 lora링크를 여기에 넣어주세요.\n",
    "'''\n",
    "\n",
    "embeding_urls = '''\n",
    "다운받을 embeding 링크를 여기에 넣어주세요.\n",
    "'''\n",
    "\n",
    "controlnet_urls = '''\n",
    "'''\n",
    "\n",
    "# 기본 프롬프트\n",
    "positive = 'masterpiece, best quality, highres, 1girl, '\n",
    "negative = '(worst quality:1.9), (low quality:1.9), (normal quality:1.9), lowres, (infant, loli:1.5), '\n",
    "\n",
    "# 설치할 확장 기능\n",
    "extensions = '''\n",
    "설치할 확장링크를 넣어주세요. 확장은 WEB UI 내에서 받으시는 것을 추천드립니다.\n",
    "'''\n",
    "# ------------------------------------------------\n",
    "\n",
    "import os\n",
    "import json\n",
    "import shutil\n",
    "\n",
    "home_dir = os.getcwd()\n",
    "repo_dir = os.path.join(home_dir, 'stable-diffusion-webui')\n",
    "os.chdir(repo_dir)\n",
    "\n",
    "# 원래 있는 sd 모델 삭제\n",
    "for i in [x for x in os.listdir(home_dir) if x.endswith('.ckpt')]:\n",
    "    os.remove(os.path.join(home_dir, i))\n",
    "\n",
    "# 모델 다운로드\n",
    "models_dir = os.path.join(repo_dir, 'models', 'Stable-diffusion')\n",
    "for i in [x.strip() for x in model_urls.split('\\n') if x]:\n",
    "    ! wget {i} -P {models_dir}\n",
    "\n",
    "# vae 다운로드\n",
    "vae_dir = os.path.join(repo_dir, 'models', 'VAE')\n",
    "for i in [x.strip() for x in vae_urls.split('\\n') if x]:\n",
    "    ! wget {i} -P {vae_dir}\n",
    "\n",
    "# lora 다운로드\n",
    "lora_dir = os.path.join(repo_dir, 'models', 'Lora')\n",
    "for i in [x.strip() for x in lora_urls.split('\\n') if x]:\n",
    "    ! wget {i} -P {lora_dir}\n",
    "\n",
    "# embeding 다운로드\n",
    "embeding_dir = os.path.join(repo_dir, 'embeddings')\n",
    "for i in [x.strip() for x in embeding_urls.split('\\n') if x]:\n",
    "    ! wget {i} -P {embeding_dir}\n",
    "\n",
    "# controlnet 다운로드\n",
    "controlnet_dir = os.path.join(repo_dir, 'extensions', 'sd-webui-controlnet', 'models')\n",
    "for i in [x.strip() for x in controlnet_urls.split('\\n') if x]:\n",
    "    ! wget {i} -P {controlnet_dir}\n",
    "\n",
    "# ui-config.json 백업\n",
    "ui_conf_path = os.path.join(repo_dir, 'ui-config.json')\n",
    "ui_conf_bk_path = os.path.join(repo_dir, 'ui-config_bk.json')\n",
    "if not os.path.exists(ui_conf_bk_path):\n",
    "    shutil.copy(ui_conf_path, ui_conf_bk_path)\n",
    "with open(ui_conf_path, 'r', encoding='utf-8') as f:\n",
    "    orig_ui = json.load(f)\n",
    "    ur_ui = orig_ui\n",
    "\n",
    "# ui-config.json 수정\n",
    "ur_ui['txt2img/Prompt/value'] = positive\n",
    "ur_ui['txt2img/Negative prompt/value'] = negative\n",
    "\n",
    "ur_ui['img2img/Prompt/value'] = positive\n",
    "ur_ui['img2img/Negative prompt/value'] = negative\n",
    "\n",
    "# 파일 저장\n",
    "with open(ui_conf_path, 'w', encoding='utf-8') as f:\n",
    "    json.dump(ur_ui, f, indent=4)\n",
    "\n",
    "# 필요한 확장 모듈 설치\n",
    "ext_dir = os.path.join(repo_dir, 'extensions')\n",
    "os.chdir(ext_dir)\n",
    "for i in [x.strip() for x in extensions.split('\\n') if x]:\n",
    "    ! git clone {i}\n",
    "os.chdir(home_dir)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.8"
  },
  "vscode": {
   "interpreter": {
    "hash": "c36c8ff63afb68809d72fa6323bde02fb9b90fe01b492d36c13befd021790766"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}