Spaces:
Paused
Paused
File size: 3,239 Bytes
771b04b a5d0f31 8799f5c 29aebc1 771b04b a5d0f31 3f54a6f 771b04b 3f54a6f 4cacddf 3f54a6f 4cacddf 771b04b a5d0f31 771b04b a5d0f31 771b04b a5d0f31 771b04b a5d0f31 771b04b a5d0f31 771b04b a5d0f31 3f54a6f 771b04b a5d0f31 771b04b |
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 |
import gradio as gr
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
# Function to generate image URL
def generate_image(prompt):
# Configure Chrome options for headless mode
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("window-size=1920x1080")
# Initialize the WebDriver
try:
# Try using system-installed ChromeDriver
driver = webdriver.Chrome(options=chrome_options)
except Exception as e:
print(f"System ChromeDriver failed: {e}. Falling back to webdriver-manager.")
try:
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
except Exception as e2:
return f"Error initializing ChromeDriver: {str(e2)}"
try:
# Open the website
driver.get("https://gptimage.ai/")
# Wait for the textarea input field
input_field = WebDriverWait(driver, 10).until(
EC.presence_of_element_located(
(By.CSS_SELECTOR, "textarea.wp-content-visualizer-chat-input")
)
)
# Enter the prompt
input_field.send_keys(prompt)
# Wait for the "Generate Image" button and click it
generate_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable(
(By.CSS_SELECTOR, "button.wp-content-visualizer-chat-send")
)
)
generate_button.click()
# Wait for the generated image
generated_image = WebDriverWait(driver, 20).until(
EC.presence_of_element_located(
(By.CSS_SELECTOR, "img.wp-content-visualizer-generated-image")
)
)
# Extract the image URL
image_url = generated_image.get_attribute("src")
return image_url
except Exception as e:
return f"Error: {str(e)}"
finally:
# Close the browser
driver.quit()
# Gradio interface
def gradio_interface(prompt):
try:
image_url = generate_image(prompt)
if image_url.startswith("Error"):
return image_url, None
return f"Generated Image URL: {image_url}", image_url
except Exception as e:
return f"Error: {str(e)}", None
# Create Gradio app
iface = gr.Interface(
fn=gradio_interface,
inputs=gr.Textbox(label="Enter your prompt", placeholder="e.g., A serene mountain landscape at sunset"),
outputs=[gr.Textbox(label="Result"), gr.Image(label="Generated Image")],
title="Image Generator with Selenium",
description="Enter a prompt to generate an image using gptimage.ai."
)
# Launch the app
if __name__ == "__main__":
iface.launch() |