Spaces:
Runtime error
Runtime error
new uploads group by room
Browse files
frontend/.env.development.example
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
PUBLIC_WS_INPAINTING="ws://0.0.0.0:7860/gradio/queue/join"
|
| 2 |
-
PUBLIC_UPLOADS="https://d26smi9133w0oo.cloudfront.net
|
| 3 |
PUBLIC_API_BASE="/server/api"
|
|
|
|
| 1 |
PUBLIC_WS_INPAINTING="ws://0.0.0.0:7860/gradio/queue/join"
|
| 2 |
+
PUBLIC_UPLOADS="https://d26smi9133w0oo.cloudfront.net"
|
| 3 |
PUBLIC_API_BASE="/server/api"
|
frontend/.env.example
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
PUBLIC_WS_INPAINTING="wss://spaces.huggingface.tech/huggingface-projects/stable-diffusion-multiplayer/gradio/queue/join"
|
| 2 |
-
PUBLIC_UPLOADS="https://d26smi9133w0oo.cloudfront.net
|
| 3 |
PUBLIC_API_BASE="/api"
|
|
|
|
| 1 |
PUBLIC_WS_INPAINTING="wss://spaces.huggingface.tech/huggingface-projects/stable-diffusion-multiplayer/gradio/queue/join"
|
| 2 |
+
PUBLIC_UPLOADS="https://d26smi9133w0oo.cloudfront.net"
|
| 3 |
PUBLIC_API_BASE="/api"
|
frontend/src/lib/PaintCanvas.svelte
CHANGED
|
@@ -141,7 +141,7 @@
|
|
| 141 |
$isRenderingCanvas = true;
|
| 142 |
Promise.allSettled(
|
| 143 |
promptImgList.map(
|
| 144 |
-
({ imgURL, position, id }) =>
|
| 145 |
new Promise<ImageRendered>((resolve, reject) => {
|
| 146 |
const img = new Image();
|
| 147 |
img.crossOrigin = 'anonymous';
|
|
@@ -153,7 +153,7 @@
|
|
| 153 |
img.onerror = (err) => {
|
| 154 |
reject(err);
|
| 155 |
};
|
| 156 |
-
img.src = `${PUBLIC_UPLOADS}/${imgURL}`;
|
| 157 |
})
|
| 158 |
)
|
| 159 |
).then((values) => {
|
|
|
|
| 141 |
$isRenderingCanvas = true;
|
| 142 |
Promise.allSettled(
|
| 143 |
promptImgList.map(
|
| 144 |
+
({ imgURL, position, id, room }) =>
|
| 145 |
new Promise<ImageRendered>((resolve, reject) => {
|
| 146 |
const img = new Image();
|
| 147 |
img.crossOrigin = 'anonymous';
|
|
|
|
| 153 |
img.onerror = (err) => {
|
| 154 |
reject(err);
|
| 155 |
};
|
| 156 |
+
img.src = `${PUBLIC_UPLOADS}/${room}/${imgURL}`;
|
| 157 |
})
|
| 158 |
)
|
| 159 |
).then((values) => {
|
stablediffusion-infinity/app.py
CHANGED
|
@@ -126,6 +126,7 @@ async def run_outpaint(
|
|
| 126 |
guidance,
|
| 127 |
step,
|
| 128 |
fill_mode,
|
|
|
|
| 129 |
):
|
| 130 |
inpaint = get_model()
|
| 131 |
sel_buffer = np.array(input_image)
|
|
@@ -181,7 +182,7 @@ async def run_outpaint(
|
|
| 181 |
|
| 182 |
if not is_nsfw:
|
| 183 |
print("not nsfw, uploading")
|
| 184 |
-
image_url = await upload_file(image, prompt_text)
|
| 185 |
|
| 186 |
params = {
|
| 187 |
"is_nsfw": is_nsfw,
|
|
@@ -222,6 +223,7 @@ with blocks as demo:
|
|
| 222 |
)
|
| 223 |
|
| 224 |
model_input = gr.Image(label="Input", type="pil", image_mode="RGBA")
|
|
|
|
| 225 |
proceed_button = gr.Button("Proceed", elem_id="proceed")
|
| 226 |
params = gr.JSON()
|
| 227 |
|
|
@@ -234,6 +236,7 @@ with blocks as demo:
|
|
| 234 |
sd_guidance,
|
| 235 |
sd_step,
|
| 236 |
init_mode,
|
|
|
|
| 237 |
],
|
| 238 |
outputs=[params],
|
| 239 |
)
|
|
@@ -323,8 +326,8 @@ def slugify(value):
|
|
| 323 |
return out[:400]
|
| 324 |
|
| 325 |
|
| 326 |
-
|
| 327 |
-
|
| 328 |
image = image.convert('RGB')
|
| 329 |
print("Uploading file from predict")
|
| 330 |
temp_file = io.BytesIO()
|
|
@@ -333,24 +336,18 @@ async def upload_file(image: Image.Image, prompt: str):
|
|
| 333 |
id = shortuuid.uuid()
|
| 334 |
prompt_slug = slugify(prompt)
|
| 335 |
filename = f"{id}-{prompt_slug}.jpg"
|
| 336 |
-
s3.upload_fileobj(Fileobj=temp_file, Bucket=AWS_S3_BUCKET_NAME, Key="
|
| 337 |
filename, ExtraArgs={"ContentType": "image/jpeg", "CacheControl": "max-age=31536000"})
|
| 338 |
temp_file.close()
|
| 339 |
|
| 340 |
-
out = {"url": f'https://d26smi9133w0oo.cloudfront.net/
|
| 341 |
"filename": filename}
|
| 342 |
print(out)
|
| 343 |
return out
|
| 344 |
|
| 345 |
|
| 346 |
@ app.post('/api/uploadfile')
|
| 347 |
-
async def create_upload_file(
|
| 348 |
-
file: UploadFile,
|
| 349 |
-
prompt: str = Form(),
|
| 350 |
-
id: str = Form(),
|
| 351 |
-
position: object = Form(),
|
| 352 |
-
room: str = Form(),
|
| 353 |
-
date: int = Form()):
|
| 354 |
contents = await file.read()
|
| 355 |
file_size = len(contents)
|
| 356 |
if not 0 < file_size < 20E+06:
|
|
@@ -367,13 +364,11 @@ async def create_upload_file(background_tasks: BackgroundTasks,
|
|
| 367 |
temp_file = io.BytesIO()
|
| 368 |
temp_file.write(contents)
|
| 369 |
temp_file.seek(0)
|
| 370 |
-
s3.upload_fileobj(Fileobj=temp_file, Bucket=AWS_S3_BUCKET_NAME, Key="
|
| 371 |
file.filename, ExtraArgs={"ContentType": file.content_type, "CacheControl": "max-age=31536000"})
|
| 372 |
temp_file.close()
|
| 373 |
|
| 374 |
-
|
| 375 |
-
|
| 376 |
-
return {"url": f'https://d26smi9133w0oo.cloudfront.net/uploads/{file.filename}', "filename": file.filename}
|
| 377 |
|
| 378 |
|
| 379 |
app.mount("/", StaticFiles(directory="../static", html=True), name="static")
|
|
|
|
| 126 |
guidance,
|
| 127 |
step,
|
| 128 |
fill_mode,
|
| 129 |
+
room_id
|
| 130 |
):
|
| 131 |
inpaint = get_model()
|
| 132 |
sel_buffer = np.array(input_image)
|
|
|
|
| 182 |
|
| 183 |
if not is_nsfw:
|
| 184 |
print("not nsfw, uploading")
|
| 185 |
+
image_url = await upload_file(image, prompt_text, room_id)
|
| 186 |
|
| 187 |
params = {
|
| 188 |
"is_nsfw": is_nsfw,
|
|
|
|
| 223 |
)
|
| 224 |
|
| 225 |
model_input = gr.Image(label="Input", type="pil", image_mode="RGBA")
|
| 226 |
+
room_id = gr.Textbox(label="Room ID")
|
| 227 |
proceed_button = gr.Button("Proceed", elem_id="proceed")
|
| 228 |
params = gr.JSON()
|
| 229 |
|
|
|
|
| 236 |
sd_guidance,
|
| 237 |
sd_step,
|
| 238 |
init_mode,
|
| 239 |
+
room_id,
|
| 240 |
],
|
| 241 |
outputs=[params],
|
| 242 |
)
|
|
|
|
| 326 |
return out[:400]
|
| 327 |
|
| 328 |
|
| 329 |
+
async def upload_file(image: Image.Image, prompt: str, room_id: str):
|
| 330 |
+
room_id = room_id.strip() or "uploads"
|
| 331 |
image = image.convert('RGB')
|
| 332 |
print("Uploading file from predict")
|
| 333 |
temp_file = io.BytesIO()
|
|
|
|
| 336 |
id = shortuuid.uuid()
|
| 337 |
prompt_slug = slugify(prompt)
|
| 338 |
filename = f"{id}-{prompt_slug}.jpg"
|
| 339 |
+
s3.upload_fileobj(Fileobj=temp_file, Bucket=AWS_S3_BUCKET_NAME, Key=f"{room_id}/" +
|
| 340 |
filename, ExtraArgs={"ContentType": "image/jpeg", "CacheControl": "max-age=31536000"})
|
| 341 |
temp_file.close()
|
| 342 |
|
| 343 |
+
out = {"url": f'https://d26smi9133w0oo.cloudfront.net/{room_id}/{filename}',
|
| 344 |
"filename": filename}
|
| 345 |
print(out)
|
| 346 |
return out
|
| 347 |
|
| 348 |
|
| 349 |
@ app.post('/api/uploadfile')
|
| 350 |
+
async def create_upload_file(file: UploadFile):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 351 |
contents = await file.read()
|
| 352 |
file_size = len(contents)
|
| 353 |
if not 0 < file_size < 20E+06:
|
|
|
|
| 364 |
temp_file = io.BytesIO()
|
| 365 |
temp_file.write(contents)
|
| 366 |
temp_file.seek(0)
|
| 367 |
+
s3.upload_fileobj(Fileobj=temp_file, Bucket=AWS_S3_BUCKET_NAME, Key="community/" +
|
| 368 |
file.filename, ExtraArgs={"ContentType": file.content_type, "CacheControl": "max-age=31536000"})
|
| 369 |
temp_file.close()
|
| 370 |
|
| 371 |
+
return {"url": f'https://d26smi9133w0oo.cloudfront.net/community/{file.filename}', "filename": file.filename}
|
|
|
|
|
|
|
| 372 |
|
| 373 |
|
| 374 |
app.mount("/", StaticFiles(directory="../static", html=True), name="static")
|