om-app greendra commited on
Commit
19c99d0
·
0 Parent(s):

Duplicate from greendra/ultsd

Browse files

Co-authored-by: Jack Hullis <greendra@users.noreply.huggingface.co>

Files changed (9) hide show
  1. .gitattributes +34 -0
  2. README.md +14 -0
  3. app.py +288 -0
  4. bad_words.txt +927 -0
  5. bb_encode.txt +2 -0
  6. error.png +0 -0
  7. keys_encode.txt +0 -0
  8. requirements.txt +5 -0
  9. unsafe.png +0 -0
.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Ultsd
3
+ emoji: 💻
4
+ colorFrom: purple
5
+ colorTo: blue
6
+ sdk: gradio
7
+ sdk_version: 3.4
8
+ app_file: app.py
9
+ pinned: false
10
+ license: other
11
+ duplicated_from: greendra/ultsd
12
+ ---
13
+
14
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,288 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import time
3
+ import base64
4
+ from io import BytesIO
5
+ import requests
6
+ import json
7
+ import io
8
+ import time
9
+ from io import BytesIO
10
+ from PIL import Image
11
+ from stability_sdk import client
12
+ import stability_sdk.interfaces.gooseai.generation.generation_pb2 as generation
13
+ import re
14
+ import random
15
+ import datetime
16
+ import pytz
17
+ from proxy_randomizer import RegisteredProviders
18
+ from cryptography.fernet import Fernet
19
+ import os
20
+
21
+ sd_decode = os.environ.get('sd_decode')
22
+
23
+ def freeimagehost(prompt, img, seed):
24
+ try:
25
+ rp = RegisteredProviders()
26
+ rp.parse_providers()
27
+ # get one proxy
28
+ proxy = rp.get_random_proxy()
29
+ proxy = proxy.get_proxy()
30
+ # convert proxy to dictionary
31
+ proxy = proxy.split(':')
32
+ # convert list to dictionary
33
+ proxy = {'http': 'http://' + proxy[0] + ':' + proxy[1]}
34
+ except:
35
+ print("Error getting proxy")
36
+ proxy = {}
37
+
38
+ try:
39
+ buffered = BytesIO()
40
+ img.save(buffered, format="JPEG")
41
+ img_str = base64.b64encode(buffered.getvalue())
42
+ key = "6d207e02198a847aa98d0a2a901485a5"
43
+ payload = {'key': key, 'image': img_str, 'format': 'json', 'expiration': '3600'}
44
+ r = requests.post("https://freeimage.host/api/1/upload", data=payload, proxies=proxy)
45
+ r = json.loads(r.text)
46
+ try:
47
+ link = loglink = r['image']['url']
48
+ link = '<a style="color:blue;" href="https://arinteli.com/app/?' + link + '+' + prompt + '+' + seed + '" target=”_blank”>'+ link +'</a>'
49
+ except:
50
+ return imagebb(prompt, img, seed)
51
+ except:
52
+ return imagebb(prompt, img, seed)
53
+ return link, loglink
54
+
55
+ bbtries = 0
56
+ def imagebb(prompt, img, seed):
57
+ global bbtries
58
+ try:
59
+ rp = RegisteredProviders()
60
+ rp.parse_providers()
61
+ # get one proxy
62
+ proxy = rp.get_random_proxy()
63
+ proxy = proxy.get_proxy()
64
+ # convert proxy to dictionary
65
+ proxy = proxy.split(':')
66
+ # convert list to dictionary
67
+ proxy = {'http': 'http://' + proxy[0] + ':' + proxy[1]}
68
+ except:
69
+ print("Error getting proxy")
70
+ proxy = {}
71
+
72
+ try:
73
+ buffered = BytesIO()
74
+ img.save(buffered, format="JPEG")
75
+ img_str = base64.b64encode(buffered.getvalue())
76
+ with open('bb_encode.txt') as f:
77
+ bbkeys = f.readlines()
78
+ bbkey = random.choice(bbkeys)
79
+ bbkeyid = bbkeys.index(bbkey) + 1
80
+ print(bbkeyid)
81
+ bbkey = Fernet(sd_decode).decrypt(bbkey.encode())
82
+ # convert the sdkey from bytes to a string
83
+ bbkey = bbkey.decode()
84
+ bbkey = bbkey.strip()
85
+ payload = {'key': bbkey, 'image': img_str, 'format': 'json', 'expiration': '3600'}
86
+ r = requests.post("https://api.imgbb.com/1/upload", data=payload, proxies=proxy)
87
+ r = json.loads(r.text)
88
+ try:
89
+ link = loglink = r['data']['url']
90
+ link = '<a style="color:blue;" href="https://arinteli.com/app/?' + link + '+' + prompt + '+' + seed + '" target=”_blank”>'+ link +'</a>'
91
+ except:
92
+ print(r)
93
+ bbtries += 1
94
+ print(bbtries)
95
+ if bbtries < 5:
96
+ return imagebb(prompt, img, seed)
97
+ else:
98
+ bbtries = 0
99
+ return imgur(prompt, img, seed)
100
+ except Exception as e:
101
+ print(e)
102
+ bbtries += 1
103
+ if bbtries < 5:
104
+ return imagebb(prompt, img, seed)
105
+ else:
106
+ bbtries = 0
107
+ return imgur(prompt, img, seed)
108
+ return link, loglink
109
+
110
+ def imgur(prompt, img, seed):
111
+ try:
112
+ buffered = BytesIO()
113
+ img.save(buffered, format="JPEG")
114
+ img_str = base64.b64encode(buffered.getvalue())
115
+ url = "https://api.imgur.com/3/image"
116
+ payload={'image': img_str}
117
+ files=[
118
+ ]
119
+ headers = {
120
+ 'Authorization': 'Client-ID ab515931f7df961'
121
+ }
122
+ response = requests.request("POST", url, headers=headers, data=payload, files=files)
123
+ response = json.loads(response.text)
124
+ try:
125
+ link = loglink = response['data']['link']
126
+ link = '<a style="color:blue;" href="https://arinteli.com/app/?' + link + '+' + prompt + '+' + seed + '" target=”_blank”>'+ link +'</a>'
127
+ except:
128
+ link = loglink = "Error generating link (service rebooting)"
129
+
130
+ except:
131
+ link = loglink = "Error (2) generating link"
132
+ return link, loglink
133
+
134
+ sdtries = 0
135
+ def sd(prompt, negprompt, version):
136
+ if prompt == "":
137
+ return Image.open('error.png'), "Error! Please enter a prompt"
138
+
139
+ london = pytz.timezone('Europe/London')
140
+ now = datetime.datetime.now(london)
141
+ timestamp = (now.strftime("%H:%M:%S"))
142
+ timestamp = str(timestamp)
143
+ with open("keys_encode.txt", "r") as f:
144
+ sdkeys = f.readlines()
145
+ sdkey = random.choice(sdkeys)
146
+ keyid = sdkeys.index(sdkey) + 1
147
+ keyid = str(keyid)
148
+ sdkey = sdkey.strip()
149
+ # decode the sdkey with the Fernet key
150
+ sdkey = Fernet(sd_decode).decrypt(sdkey.encode())
151
+ # convert the sdkey from bytes to a string
152
+ sdkey = sdkey.decode()
153
+
154
+ if version == "2.1":
155
+ engine = "stable-diffusion-512-v2-1"
156
+ if version == "1.5":
157
+ engine = "stable-diffusion-v1-5"
158
+
159
+ # connect to dream API
160
+ stability_api = client.StabilityInference(
161
+ key = sdkey,
162
+ verbose=True,
163
+ engine=engine,
164
+ )
165
+ # convert string prompt to lowercase
166
+ prompt = prompt.lower()
167
+ negprompt = negprompt.lower()
168
+
169
+ # set random seed
170
+ seed = random.randint(0, 9999999)
171
+
172
+ # create list bad_words_list from bad_words.txt and strip whitespace
173
+ with open('bad_words.txt') as f:
174
+ bad_words_list = f.readlines()
175
+ bad_words_list = [x.strip() for x in bad_words_list]
176
+
177
+ # check if bad_words_list is in prompt
178
+ if any(re.findall(r'\b{}\b'.format(bad_word), prompt) for bad_word in bad_words_list):
179
+ # check if any bad words are in prompt
180
+ blocked_words = []
181
+ for bad_word in bad_words_list:
182
+ if re.findall(r'\b{}\b'.format(bad_word), prompt):
183
+ blocked_words.append(bad_word)
184
+
185
+
186
+ blocked_words = ', '.join(blocked_words)
187
+ print(keyid + ": " + timestamp + ": BLOCKED PROMPT \"" + prompt + "\" BANNED WORDS: " + blocked_words)
188
+ time.sleep(3)
189
+ print("User has had their time wasted.\n")
190
+ # javascript to log error to console
191
+ return Image.open('unsafe.png'), "Your prompt contains blocked words! Please try a different prompt!"
192
+
193
+ else:
194
+ try:
195
+ # send prompt to dream API
196
+ # set random seed
197
+ answers = stability_api.generate(
198
+ #prompt=prompt,
199
+ steps=15,
200
+ sampler=generation.SAMPLER_K_DPMPP_2S_ANCESTRAL,
201
+ guidance_preset=generation.GUIDANCE_PRESET_FAST_GREEN,
202
+ seed=seed,
203
+ prompt = [generation.Prompt(text=prompt,parameters=generation.PromptParameters(weight=5)),
204
+ generation.Prompt(text=negprompt,parameters=generation.PromptParameters(weight=-5))],
205
+ )
206
+
207
+
208
+ # convert seed to string
209
+ seed = str(seed)
210
+
211
+ # iterating over the generator produces the api response
212
+ for resp in answers:
213
+ for artifact in resp.artifacts:
214
+ if artifact.finish_reason == generation.FILTER:
215
+ print("FILTERED PROMPT \"" + prompt + "\"")
216
+ try:
217
+ img = Image.open(io.BytesIO(artifact.binary))
218
+ print("API image filter\n")
219
+ return img, "<b>Sorry, Stability.AI detected your image as unsafe (likely a false positive). Please try regenerating your image again, or adjusting your prompt.</b>", seed
220
+ except:
221
+ img = Image.open('unsafe.png')
222
+ print("API word filter\n")
223
+ return img, "<b>Sorry, Stability.AI detected unsafe words in your prompt. Please remove them and try again.</b>", seed
224
+
225
+ if artifact.type == generation.ARTIFACT_IMAGE:
226
+ img = Image.open(io.BytesIO(artifact.binary))
227
+ link = freeimagehost(prompt, img, seed)
228
+ # time.sleep(2)
229
+ print(version + "," + keyid + ": " + timestamp + ": PROMPT \"" + prompt + ", Neg: " + negprompt + "\" WAS GENERATED SUCCESSFULLY AND IMAGE LINK: \n" + link[1] + "\n")
230
+ return img, 'Your download URL: ' + link[0] + '<br> Seed: ' + seed
231
+ except Exception as e:
232
+ print(keyid, '\n' ,e)
233
+ global sdtries
234
+ sdtries += 1
235
+ if sdtries < 5:
236
+ print("Retrying...")
237
+ return sd(prompt, negprompt)
238
+ else:
239
+ sdtries = 0
240
+ return Image.open('error.png'), "Error! Please try again"
241
+
242
+
243
+
244
+ examples = [["A hyperrealistic photograph of German architectural modern home in the suburbs of Hamburg, Germany, lens flares, cinematic, hdri, matte painting, concept art, celestial, soft render, highly detailed, cgsociety, octane render, trending on artstation, architectural HD, HQ, 4k, 8k", "tree, bush, woods, branches, leaves, green, forest", "2.1"],
245
+ ["A dream of a distant galaxy, by Caspar David Friedrich, matte painting trending on artstation HQ", "", "1.5"],
246
+ ["A Hyperrealistic photograph of ancient Malaysian architectural ruins in Borneo's East Malaysia, lens flares, cinematic, hdri, matte painting, concept art, celestial, soft render, highly detailed, cgsociety, octane render, trending on artstation, architectural HD, HQ, 4k, 8k", "", "2.1"],
247
+ ["A dream of a distant galaxy, by Caspar David Friedrich, matte painting trending on artstation HQ", "", "1.5"],
248
+ ["A small cabin on top of a snowy mountain in the style of Disney, artstation", "", "2.1"],
249
+ ["A Hyperrealistic photograph of ancient Tokyo/London/Paris architectural ruins in a flooded apocalypse landscape of dead skyscrapers, lens flares, cinematic, hdri, matte painting, concept art, celestial, soft render, highly detailed, cgsociety, octane render, trending on artstation, architectural HD, HQ, 4k, 8k", "", "2.1"],
250
+ ["a portrait of a beautiful blonde woman, fine - art photography, soft portrait shot 8 k, mid length, ultrarealistic uhd faces, unsplash, kodak ultra max 800, 85 mm, intricate, casual pose, centered symmetrical composition, stunning photos, masterpiece, grainy, centered composition", "blender, cropped, lowres, poorly drawn face, out of frame, poorly drawn hands, blurry, bad art, blurred, text, watermark, disfigured, deformed, closed eyes", "2.1"],
251
+ ["A hyperrealistic painting of an astronaut inside of a massive futuristic metal mechawarehouse, cinematic, sci-fi, lens flares, rays of light, epic, matte painting, concept art, celestial, soft render, octane render, trending on artstation, 4k, 8k", "blender, cropped, lowres, out of frame, blurry, bad art, blurred, text, disfigured, deformed", "2.1"]]
252
+
253
+ with gr.Blocks(
254
+ ) as demo:
255
+ # create radio for to use either v1.5 or v2.0
256
+ version = gr.Radio(
257
+ label="Stable Diffusion Version",
258
+ choices=["1.5", "2.1"],
259
+ value="1.5",
260
+ elem_id="version",
261
+ )
262
+
263
+ download = gr.HTML(elem_id="download")
264
+ output = gr.Image(label="Image Generation", elem_id="output")
265
+ name = gr.Textbox(label="Prompt", placeholder="Describe the image you want to generate. Longer and more detailed prompts work better.", elem_id="name")
266
+ negprompt = gr.Textbox(label="Negative Prompt", placeholder="Describe the image you want to avoid. Longer and more detailed prompts work better.", elem_id="negprompt")
267
+ greet_btn = gr.Button("Generate Image", elem_id="greet_btn")
268
+ bin = gr.HTML("", visible=False)
269
+ ex = gr.Examples(examples=examples, fn=sd, inputs=[name, negprompt, version], outputs=[output, download], cache_examples=True)
270
+ greet_btn.click(
271
+ None,
272
+ [],
273
+ bin,
274
+ _js="""
275
+ () => {
276
+ /*! js-cookie v3.0.1 | MIT */
277
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)e[o]=n[o]}return e}return function t(n,o){function r(t,r,i){if("undefined"!=typeof document){"number"==typeof(i=e({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=t+"="+n.write(r,t)+c}}return Object.create({set:r,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],o={},r=0;r<t.length;r++){var i=t[r].split("="),c=i.slice(1).join("=");try{var u=decodeURIComponent(i[0]);if(o[u]=n.read(c,u),e===u)break}catch(e){}}return e?o[e]:o}},remove:function(t,n){r(t,"",e({},n,{expires:-1}))},withAttributes:function(n){return t(this.converter,e({},this.attributes,n))},withConverter:function(n){return t(e({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(n)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})}));
278
+ // create cookie
279
+ if (Cookies.get('creations') == undefined) {
280
+ Cookies.set('creations', '1', { expires: 250 / 24 / 60 / 60 });
281
+ } else {
282
+ Cookies.set('creations', parseInt(Cookies.get('creations')) + 1, { expires: 250 / 24 / 60 / 60 }); }
283
+ console.log(Cookies.get('creations'));
284
+ }""")
285
+ greet_btn.click(fn=sd, inputs=[name, negprompt, version], outputs=[output, download])
286
+
287
+
288
+ demo.queue(concurrency_count=3, max_size=20).launch(max_threads=150)
bad_words.txt ADDED
@@ -0,0 +1,927 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2 girls 1 cup
2
+ 2g1c
3
+ 4r5e
4
+ 5h1t
5
+ 5hit
6
+ a55
7
+ a_s_s
8
+ acrotomophilia
9
+ alabama hot pocket
10
+ alaskan pipeline
11
+ anal
12
+ anilingus
13
+ anus
14
+ apeshit
15
+ ar5e
16
+ arrse
17
+ arsehole
18
+ ass-fucker
19
+ ass-hat
20
+ ass-pirate
21
+ assbag
22
+ assbandit
23
+ assbanger
24
+ assbite
25
+ assclown
26
+ asscock
27
+ asscracker
28
+ assface
29
+ assfucker
30
+ assfukka
31
+ assgoblin
32
+ asshat
33
+ asshead
34
+ asshole
35
+ assholes
36
+ asshopper
37
+ assjacker
38
+ asslick
39
+ asslicker
40
+ assmonkey
41
+ assmunch
42
+ assmuncher
43
+ asspirate
44
+ assshole
45
+ asssucker
46
+ asswad
47
+ asswhole
48
+ asswipe
49
+ auto erotic
50
+ autoerotic
51
+ b!tch
52
+ b00bs
53
+ b17ch
54
+ b1tch
55
+ babeland
56
+ baby batter
57
+ baby juice
58
+ ball gag
59
+ ball gravy
60
+ ball kicking
61
+ ball licking
62
+ ball sack
63
+ ball sucking
64
+ ballbag
65
+ ballsack
66
+ bampot
67
+ bangbros
68
+ bareback
69
+ barely legal
70
+ barenaked
71
+ bastard
72
+ bastardo
73
+ bastinado
74
+ bbw
75
+ bdsm
76
+ beaner
77
+ beaners
78
+ beastial
79
+ beastiality
80
+ beastility
81
+ beaver cleaver
82
+ beaver lips
83
+ bellend
84
+ bestial
85
+ bestiality
86
+ bi+ch
87
+ biatch
88
+ big black
89
+ big knockers
90
+ big tits
91
+ bimbos
92
+ birdlock
93
+ bitch
94
+ bitcher
95
+ bitchers
96
+ bitches
97
+ bitchin
98
+ bitching
99
+ black cock
100
+ blonde action
101
+ blonde on blonde action
102
+ blow job
103
+ blow your load
104
+ blowjob
105
+ blowjobs
106
+ blue waffle
107
+ blumpkin
108
+ boiolas
109
+ bollock
110
+ bollocks
111
+ bollok
112
+ bollox
113
+ bondage
114
+ boner
115
+ booty call
116
+ breast
117
+ brown showers
118
+ brunette action
119
+ buceta
120
+ bukkake
121
+ bulldyke
122
+ bullet vibe
123
+ bullshit
124
+ bung hole
125
+ bunghole
126
+ bunny fucker
127
+ butt-pirate
128
+ buttcheeks
129
+ butthole
130
+ buttmunch
131
+ buttplug
132
+ c0ck
133
+ c0cksucker
134
+ camel toe
135
+ camgirl
136
+ camslut
137
+ camwhore
138
+ carpet muncher
139
+ carpetmuncher
140
+ cawk
141
+ chinc
142
+ chink
143
+ choad
144
+ chocolate rosebuds
145
+ chode
146
+ cipa
147
+ circlejerk
148
+ cl1t
149
+ cleveland steamer
150
+ clit
151
+ clitface
152
+ clitoris
153
+ clits
154
+ clover clamps
155
+ clusterfuck
156
+ cnut
157
+ cock
158
+ cock-sucker
159
+ cockbite
160
+ cockburger
161
+ cockface
162
+ cockhead
163
+ cockjockey
164
+ cockknoker
165
+ cockmaster
166
+ cockmongler
167
+ cockmongruel
168
+ cockmonkey
169
+ cockmunch
170
+ cockmuncher
171
+ cocknose
172
+ cocknugget
173
+ cocks
174
+ cockshit
175
+ cocksmith
176
+ cocksmoker
177
+ cocksuck
178
+ cocksuck
179
+ cocksucked
180
+ cocksucked
181
+ cocksucker
182
+ cocksucking
183
+ cocksucks
184
+ cocksuka
185
+ cocksukka
186
+ cok
187
+ cokmuncher
188
+ coksucka
189
+ coochie
190
+ coochy
191
+ coon
192
+ coons
193
+ cooter
194
+ coprolagnia
195
+ coprophilia
196
+ cornhole
197
+ creampie
198
+ cum
199
+ cumbubble
200
+ cumdumpster
201
+ cumguzzler
202
+ cumjockey
203
+ cummer
204
+ cumming
205
+ cums
206
+ cumshot
207
+ cumslut
208
+ cumtart
209
+ cunilingus
210
+ cunillingus
211
+ cunnie
212
+ cunnilingus
213
+ cunt
214
+ cuntface
215
+ cunthole
216
+ cuntlick
217
+ cuntlick
218
+ cuntlicker
219
+ cuntlicker
220
+ cuntlicking
221
+ cuntlicking
222
+ cuntrag
223
+ cunts
224
+ cyalis
225
+ cyberfuc
226
+ cyberfuck
227
+ cyberfucked
228
+ cyberfucker
229
+ cyberfuckers
230
+ cyberfucking
231
+ d1ck
232
+ darkie
233
+ date rape
234
+ daterape
235
+ deep throat
236
+ deepthroat
237
+ dendrophilia
238
+ dick
239
+ dickbag
240
+ dickbeater
241
+ dickface
242
+ dickhead
243
+ dickhole
244
+ dickjuice
245
+ dickmilk
246
+ dickmonger
247
+ dickslap
248
+ dicksucker
249
+ dickwad
250
+ dickweasel
251
+ dickweed
252
+ dickwod
253
+ dike
254
+ dildo
255
+ dildos
256
+ dingleberries
257
+ dingleberry
258
+ dink
259
+ dinks
260
+ dipshit
261
+ dirsa
262
+ dirty pillows
263
+ dirty sanchez
264
+ dlck
265
+ dog style
266
+ dog-fucker
267
+ doggie style
268
+ doggiestyle
269
+ doggin
270
+ dogging
271
+ doggy style
272
+ doggystyle
273
+ dolcett
274
+ domination
275
+ dominatrix
276
+ dommes
277
+ donkey punch
278
+ donkeyribber
279
+ doochbag
280
+ dookie
281
+ doosh
282
+ double dong
283
+ double penetration
284
+ douche
285
+ douchebag
286
+ dp action
287
+ dry hump
288
+ duche
289
+ dumbshit
290
+ dumshit
291
+ dvda
292
+ dyke
293
+ eat my ass
294
+ ecchi
295
+ ejaculate
296
+ ejaculated
297
+ ejaculates
298
+ ejaculating
299
+ ejaculatings
300
+ ejaculation
301
+ ejakulate
302
+ erotic
303
+ erotism
304
+ escort
305
+ eunuch
306
+ f u c k
307
+ f u c k e r
308
+ f4nny
309
+ f_u_c_k
310
+ fag
311
+ fagbag
312
+ fagg
313
+ fagging
314
+ faggit
315
+ faggitt
316
+ faggot
317
+ faggs
318
+ fagot
319
+ fagots
320
+ fags
321
+ fagtard
322
+ fanny
323
+ fannyflaps
324
+ fannyfucker
325
+ fanyy
326
+ fatass
327
+ fcuk
328
+ fcuker
329
+ fcuking
330
+ fecal
331
+ feck
332
+ fecker
333
+ felatio
334
+ felch
335
+ felching
336
+ fellate
337
+ fellatio
338
+ feltch
339
+ female squirting
340
+ femdom
341
+ figging
342
+ fingerbang
343
+ fingerfuck
344
+ fingerfucked
345
+ fingerfucker
346
+ fingerfuckers
347
+ fingerfucking
348
+ fingerfucks
349
+ fingering
350
+ fistfuck
351
+ fistfucked
352
+ fistfucker
353
+ fistfuckers
354
+ fistfucking
355
+ fistfuckings
356
+ fistfucks
357
+ fisting
358
+ flamer
359
+ flange
360
+ fook
361
+ fooker
362
+ foot fetish
363
+ footjob
364
+ frotting
365
+ fuck
366
+ fuck buttons
367
+ fucka
368
+ fucked
369
+ fucker
370
+ fuckers
371
+ fuckhead
372
+ fuckheads
373
+ fuckin
374
+ fucking
375
+ fuckings
376
+ fuckingshitmotherfucker
377
+ fuckme
378
+ fucks
379
+ fucktards
380
+ fuckwhit
381
+ fuckwit
382
+ fudge packer
383
+ fudgepacker
384
+ fuk
385
+ fuker
386
+ fukker
387
+ fukkin
388
+ fuks
389
+ fukwhit
390
+ fukwit
391
+ futanari
392
+ fux
393
+ fux0r
394
+ g-spot
395
+ gang bang
396
+ gangbang
397
+ gangbanged
398
+ gangbanged
399
+ gangbangs
400
+ gays
401
+ gay sex
402
+ gayass
403
+ gaybob
404
+ gaydo
405
+ gaylord
406
+ gaysex
407
+ gaytard
408
+ gaywad
409
+ genitals
410
+ giant cock
411
+ girls gone wild
412
+ goatcx
413
+ goatse
414
+ gokkun
415
+ golden shower
416
+ goo girl
417
+ gooch
418
+ goodpoop
419
+ gook
420
+ goregasm
421
+ gringo
422
+ grope
423
+ group sex
424
+ guido
425
+ guro
426
+ hand job
427
+ handjob
428
+ hard core
429
+ hardcore
430
+ hardcoresex
431
+ heeb
432
+ hentai
433
+ heshe
434
+ ho
435
+ hoar
436
+ hoare
437
+ hoe
438
+ hoer
439
+ homo
440
+ homoerotic
441
+ honkey
442
+ honky
443
+ hooker
444
+ hore
445
+ horniest
446
+ horny
447
+ hot carl
448
+ hotsex
449
+ how to kill
450
+ how to murder
451
+ huge fat
452
+ humping
453
+ incest
454
+ intercourse
455
+ jack off
456
+ jack-off
457
+ jackass
458
+ jackoff
459
+ jail bait
460
+ jailbait
461
+ jap
462
+ jelly donut
463
+ jerk off
464
+ jerk-off
465
+ jigaboo
466
+ jiggaboo
467
+ jiggerboo
468
+ jism
469
+ jiz
470
+ jiz
471
+ jizm
472
+ jizm
473
+ jizz
474
+ juggs
475
+ kawk
476
+ kike
477
+ kinbaku
478
+ kinkster
479
+ kinky
480
+ kiunt
481
+ knob
482
+ knobbing
483
+ knobead
484
+ knobed
485
+ knobend
486
+ knobhead
487
+ knobjocky
488
+ knobjokey
489
+ kock
490
+ kondum
491
+ kondums
492
+ kooch
493
+ kootch
494
+ kum
495
+ kumer
496
+ kummer
497
+ kumming
498
+ kums
499
+ kunilingus
500
+ kunt
501
+ kyke
502
+ l3i+ch
503
+ l3itch
504
+ labia
505
+ leather restraint
506
+ leather straight jacket
507
+ lemon party
508
+ lesbo
509
+ lezzie
510
+ lolita
511
+ lovemaking
512
+ lust
513
+ lusting
514
+ m0f0
515
+ m0fo
516
+ m45terbate
517
+ ma5terb8
518
+ ma5terbate
519
+ make me come
520
+ male squirting
521
+ masochist
522
+ master-bate
523
+ masterb8
524
+ masterbat*
525
+ masterbat3
526
+ masterbate
527
+ masterbation
528
+ masterbations
529
+ masturbate
530
+ menage a trois
531
+ milf
532
+ minge
533
+ missionary position
534
+ mo-fo
535
+ mof0
536
+ mofo
537
+ mothafuck
538
+ mothafucka
539
+ mothafuckas
540
+ mothafuckaz
541
+ mothafucked
542
+ mothafucker
543
+ mothafuckers
544
+ mothafuckin
545
+ mothafucking
546
+ mothafuckings
547
+ mothafucks
548
+ mother fucker
549
+ motherfuck
550
+ motherfucked
551
+ motherfucker
552
+ motherfuckers
553
+ motherfuckin
554
+ motherfucking
555
+ motherfuckings
556
+ motherfuckka
557
+ motherfucks
558
+ mound of venus
559
+ mr hands
560
+ muff
561
+ muff diver
562
+ muffdiver
563
+ muffdiving
564
+ mutha
565
+ muthafecker
566
+ muthafuckker
567
+ muther
568
+ mutherfucker
569
+ n1gga
570
+ n1gger
571
+ nambla
572
+ naked
573
+ nawashi
574
+ nazi
575
+ neonazi
576
+ nig nog
577
+ nigg3r
578
+ nigg4h
579
+ nigga
580
+ niggah
581
+ niggas
582
+ niggaz
583
+ nigger
584
+ niggers
585
+ niglet
586
+ nimphomania
587
+ nipple
588
+ nipples
589
+ nob
590
+ nob jokey
591
+ nobhead
592
+ nobjocky
593
+ nobjokey
594
+ nsfw
595
+ nsfw images
596
+ nude
597
+ nudity
598
+ nudist
599
+ numbnuts
600
+ nutsack
601
+ nympho
602
+ nymphomania
603
+ octopussy
604
+ omorashi
605
+ one cup two girls
606
+ one guy one jar
607
+ orgasim
608
+ orgasim
609
+ orgasims
610
+ orgasm
611
+ orgasms
612
+ orgy
613
+ p0rn
614
+ paedophile
615
+ paki
616
+ panooch
617
+ panties
618
+ panty
619
+ pawn
620
+ pecker
621
+ peckerhead
622
+ pedobear
623
+ pedophile
624
+ pegging
625
+ penis
626
+ penisfucker
627
+ phone sex
628
+ phonesex
629
+ phuck
630
+ phuk
631
+ phuked
632
+ phuking
633
+ phukked
634
+ phukking
635
+ phuks
636
+ phuq
637
+ piece of shit
638
+ pigfucker
639
+ pimpis
640
+ pis
641
+ pises
642
+ pisin
643
+ pising
644
+ pisof
645
+ piss
646
+ piss pig
647
+ pissed
648
+ pisser
649
+ pissers
650
+ pisses
651
+ pissflap
652
+ pissflaps
653
+ pissin
654
+ pissin
655
+ pissing
656
+ pissoff
657
+ pissoff
658
+ pisspig
659
+ playboy
660
+ pleasure chest
661
+ pole smoker
662
+ polesmoker
663
+ pollock
664
+ ponyplay
665
+ poo
666
+ poof
667
+ poon
668
+ poonani
669
+ poonany
670
+ poontang
671
+ poop
672
+ poop chute
673
+ poopchute
674
+ porn
675
+ porno
676
+ pornography
677
+ pornos
678
+ prick
679
+ pricks
680
+ prince albert piercing
681
+ pron
682
+ pthc
683
+ pube
684
+ pubes
685
+ punanny
686
+ punany
687
+ punta
688
+ pusies
689
+ pusse
690
+ pussi
691
+ pussies
692
+ pussy
693
+ pussylicking
694
+ pussys
695
+ pusy
696
+ puto
697
+ queaf
698
+ queef
699
+ queerbait
700
+ queerhole
701
+ quim
702
+ raghead
703
+ raging boner
704
+ rape
705
+ raping
706
+ rapist
707
+ rectum
708
+ renob
709
+ retard
710
+ reverse cowgirl
711
+ rimjaw
712
+ rimjob
713
+ rimming
714
+ rosy palm
715
+ rosy palm and her 5 sisters
716
+ ruski
717
+ rusty trombone
718
+ s hit
719
+ s&m
720
+ s.o.b.
721
+ s_h_i_t
722
+ sadism
723
+ sadist
724
+ santorum
725
+ scat
726
+ schlong
727
+ scissoring
728
+ screwing
729
+ scroat
730
+ scrote
731
+ scrotum
732
+ semen
733
+ sex
734
+ sexo
735
+ sh!+
736
+ sh!t
737
+ sh1t
738
+ shag
739
+ shagger
740
+ shaggin
741
+ shagging
742
+ shaved beaver
743
+ shaved pussy
744
+ shemale
745
+ shi+
746
+ shibari
747
+ shit
748
+ shit-ass
749
+ shit-bag
750
+ shit-bagger
751
+ shit-brain
752
+ shit-breath
753
+ shit-cunt
754
+ shit-dick
755
+ shit-eating
756
+ shit-face
757
+ shit-faced
758
+ shit-fit
759
+ shit-head
760
+ shit-heel
761
+ shit-hole
762
+ shit-house
763
+ shit-load
764
+ shit-pot
765
+ shit-spitter
766
+ shit-stain
767
+ shitass
768
+ shitbag
769
+ shitbagger
770
+ shitblimp
771
+ shitbrain
772
+ shitbreath
773
+ shitcunt
774
+ shitdick
775
+ shite
776
+ shiteating
777
+ shited
778
+ shitey
779
+ shitface
780
+ shitfaced
781
+ shitfit
782
+ shitfuck
783
+ shitfull
784
+ shithead
785
+ shitheel
786
+ shithole
787
+ shithouse
788
+ shiting
789
+ shitings
790
+ shitload
791
+ shitpot
792
+ shits
793
+ shitspitter
794
+ shitstain
795
+ shitted
796
+ shitter
797
+ shitters
798
+ shittiest
799
+ shitting
800
+ shittings
801
+ shitty
802
+ shitty
803
+ shity
804
+ shiz
805
+ shiznit
806
+ shota
807
+ shrimping
808
+ skank
809
+ skeet
810
+ slanteye
811
+ slut
812
+ slutbag
813
+ sluts
814
+ smeg
815
+ smegma
816
+ smut
817
+ snatch
818
+ snowballing
819
+ sodomize
820
+ sodomy
821
+ son-of-a-bitch
822
+ spac
823
+ spic
824
+ spick
825
+ splooge
826
+ splooge moose
827
+ spooge
828
+ spread legs
829
+ spunk
830
+ strap on
831
+ strapon
832
+ strappado
833
+ strip club
834
+ style doggy
835
+ suicide girls
836
+ sultry women
837
+ swastika
838
+ swinger
839
+ t1tt1e5
840
+ t1tties
841
+ tainted love
842
+ tard
843
+ taste my
844
+ tea bagging
845
+ teets
846
+ teez
847
+ testical
848
+ testicle
849
+ threesome
850
+ throating
851
+ thundercunt
852
+ tied up
853
+ tight white
854
+ tittyfuck
855
+ tittywank
856
+ titwank
857
+ tongue in a
858
+ tosser
859
+ towelhead
860
+ tranny
861
+ tribadism
862
+ tub girl
863
+ tubgirl
864
+ turd
865
+ tushy
866
+ tw4t
867
+ twat
868
+ twathead
869
+ twatlips
870
+ twatty
871
+ twink
872
+ twinkie
873
+ two girls one cup
874
+ twunt
875
+ twunter
876
+ upskirt
877
+ up skirt
878
+ urethra play
879
+ urophilia
880
+ v14gra
881
+ v1gra
882
+ va-j-j
883
+ vag
884
+ vagina
885
+ venus mound
886
+ viagra
887
+ vibrator
888
+ violet wand
889
+ vjayjay
890
+ vorarephilia
891
+ voyeur
892
+ vulva
893
+ w00se
894
+ wang
895
+ wank
896
+ wanker
897
+ wanky
898
+ wet dream
899
+ wetback
900
+ white power
901
+ whoar
902
+ whore
903
+ willies
904
+ willy
905
+ wrapping men
906
+ wrinkled starfish
907
+ xrated
908
+ xx
909
+ xxx
910
+ yaoi
911
+ yellow showers
912
+ yiffy
913
+ zoophilia
914
+ transparent clothes
915
+ wardrobe malfunction
916
+ suicide
917
+ little girl
918
+ little girls
919
+ pregnant
920
+ breastfeeding
921
+ gore
922
+ metart
923
+ clean shaven
924
+ mons pubis
925
+ groin
926
+ knickers
927
+ underwear
bb_encode.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ gAAAAABjl9kFLAq5Ueh5XsquEA0t4ALfA74dN6t-Jqzs-VqVWC-REt1vdV2CJ6Si8y3uYjJCuPKzChVCDWgXsQ5lMI8GeHS0bFfuOsRtnp1wB2oNT1NGu4xok4C-yszjXv1ikvoYQCRZ
2
+ gAAAAABjl9kFH1fWJIRFAgdkwI3jXseOMOVO_b7BWRmr0ciA1oHMI3Wd8ATX9QlUqL4jjiBEJt85_wFl9roipojyu4MtX96sotQxmZIVtdKfIajyDtN7XV4_nNMXaWS6G8OTqOYA5Nkp
error.png ADDED
keys_encode.txt ADDED
The diff for this file is too large to render. See raw diff
 
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ replicate
2
+ requests
3
+ IPython
4
+ stability_sdk
5
+ proxy_randomizer
unsafe.png ADDED