Spaces:
Paused
Paused
File size: 3,959 Bytes
cf8bafe 4115131 65ad1db c9e21fd a97c5ef 3faa194 4603c75 3faa194 4603c75 cf8bafe 3096154 65ad1db cf8bafe 65ad1db 4603c75 cb460c0 c249291 3faa194 c249291 c27ffc4 3faa194 384d32a c249291 36c015f c249291 3faa194 b9e2ccf 3faa194 c249291 b2e5b52 4603c75 c249291 b2e5b52 e6002b6 c249291 384d32a 4603c75 c249291 36c015f c249291 384d32a 36c015f 3faa194 4603c75 7f61366 c3413fa c27ffc4 c3413fa 4603c75 4bcd883 4603c75 7f61366 c3413fa c27ffc4 c3413fa 7f61366 c27ffc4 7f61366 4603c75 54e9960 4603c75 54e9960 9a28b5c 4603c75 4bcd883 |
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 |
import gradio as gr
from gradio.inputs import Textbox
import torch
from diffusers import StableDiffusionPipeline
import boto3
from io import BytesIO
import os
import botocore
from time import sleep
AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY")
S3_BUCKET_NAME = 'pineblogs101145-dev'
bucket_name = 'pineblogs101145-dev'
folder = 'public/mdx/'
model_id = "CompVis/stable-diffusion-v1-4"
device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = StableDiffusionPipeline.from_pretrained(
model_id, torch_dtype=torch.float32)
pipe = pipe.to(device)
def text_to_image(prompt, save_as, key_id):
if AWS_ACCESS_KEY_ID != key_id:
return "not permition"
# Create an instance of the S3 client
s3 = boto3.client('s3',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
image_name = '-'.join(save_as.split()) + ".webp"
def save_image_to_s3(image):
# Create a BytesIO object to store the image.
image_buffer = BytesIO()
image.save(image_buffer, format='WEBP')
image_buffer.seek(0)
# Full path of the file in the bucket
s3_key = "public/" + image_name
print('Saving image to s3')
# Upload the image to the S3 bucket
s3.upload_fileobj(image_buffer, S3_BUCKET_NAME, s3_key)
print('Image %s saved to s3' % s3_key)
def generator_image(prompt):
prompt = prompt
print('Starting to generate the image ...')
try:
image = pipe(prompt).images[0]
except Exception as e:
print('Error: ', e)
print('Image generation completed')
# Save the image in S3
save_image_to_s3(image)
generator_image(prompt)
return image_name
def check_if_exist(bucket_name, key):
s3 = boto3.resource('s3',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
try:
s3.Object(bucket_name, key).load()
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
# The object does not exist.
return False
else:
# Something else has gone wrong.
raise
else:
return True
def list_s3_files():
s3_client = boto3.client('s3',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
s3 = boto3.resource('s3',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
my_bucket = s3.Bucket(bucket_name)
for objects in my_bucket.objects.filter(Prefix=folder):
print(objects.key)
filename_ext = '%s' % os.path.basename(objects.key)
filename = os.path.splitext(filename_ext)[0]
s3image = 'public/%s.webp' % filename
if check_if_exist(bucket_name, s3image):
print('Image %s already exists!' % s3image)
else:
response = s3_client.head_object(Bucket=bucket_name, Key=objects.key)
metadata = response['Metadata']
print(metadata)
if 'titulo' in metadata:
print('Has titulo, ready to create image!')
print('Start creating image.. %s ' % s3image)
title = metadata['titulo']
text_to_image(title, filename, AWS_ACCESS_KEY_ID)
else:
print('There is NOT resume, skipping..')
sleep(500/1000)
demo = gr.Blocks()
with demo:
text = gr.Textbox()
bimage = gr.Button("Generate Blog Images for PineSearch!")
bimage.click(list_s3_files, outputs=text)
demo.launch()
# iface = gr.Interface(fn=list_s3_files, inputs=[Textbox(label="bucket_name"), Textbox(label="folder")], outputs="text")
# iface.launch()
|