creative / app.py
artintel235's picture
Update app.py
c95b55d verified
raw
history blame
2.91 kB
import gradio as gr
import requests
from io import BytesIO
from PIL import Image
import os
HARDCODED_URL = "" # Replace with your desired URL
GLIF_API_TOKEN = os.getenv("GLIF_API_TOKEN")
GLIF_API_URL = "https://simple-api.glif.app"
glif_token_id = 0
glif_tokens_tried = 0
no_of_accounts = 11
def get_image_from_url(url):
"""
Loads and returns an image from a hardcoded URL.
The prompt is ignored in this version.
"""
try:
response = requests.get(url, stream=True)
response.raise_for_status()
image = Image.open(BytesIO(response.content))
return image
except requests.exceptions.RequestException as e:
return f"Error fetching image: {e}"
except Exception as e:
return f"Error processing image: {e}"
def generate_image(prompt, aspect_ratio, realism):
global glif_token_id
global GLIF_API_TOKEN
global glif_tokens_tried
global no_of_accounts
payload = {
"id": "cm3ugmzv2002gnckiosrwk6xi", # Replace with appropriate ID if necessary
"inputs": [prompt, aspect_ratio, str(realism).lower()],
}
headers = {"Authorization": f"Bearer {GLIF_API_TOKEN}"}
try:
# Make the POST request
response_data = requests.post(GLIF_API_URL, json=payload, headers=headers).json()
if "error" in response_data:
if 'error 429' in response_data['error']:
if glif_tokens_tried<no_of_accounts:
glif_token_id = (glif_token_id+1)%no_of_accounts
glif_tokens_tried+=1
GLIF_API_TOKEN = os.getenv(f"GLIF_API_TOKEN{glif_token_id}")
response_data = await generate_image_async(prompt, aspect_ratio, realism)
glif_tokens_tried = 0
return response_data
response_data = "No credits available"
return response_data
elif "output" in response_data:
url = response_data['output']
image = get_image_from_url(url)
return f"prompt:{response_data['inputs']['Prompt']}\noutput:{response_data['output']}"
else:
return "Error: Unexpected response from server"
# Define the Gradio interface
interface = gr.Interface(
fn=gradio_generate_image,
inputs=[
gr.Textbox(label="Prompt", placeholder="Describe the image you want to generate"),
gr.Radio(
choices=["1:1", "3:4", "4:3", "9:16", "16:9", "9:21", "21:9"],
label="Aspect Ratio",
value="16:9" # Default value
),
gr.Checkbox(label="Realism", value=True), # Checkbox for realism (True/False)
],
outputs=[
gr.Textbox(label="Result"),
],
title="Image Generator",
description="Provide a prompt, select an aspect ratio, and set realism to generate an image.",
)
# Launch the interface
interface.launch()