GPTImageGen / app.py
ByFlown's picture
Update app.py
a89dbc9 verified
raw
history blame
3.43 kB
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
import time
import subprocess
# Function to log Chrome and ChromeDriver versions
def log_versions():
try:
chrome_version = subprocess.check_output(["google-chrome", "--version"]).decode().strip()
chromedriver_version = subprocess.check_output(["chromedriver", "--version"]).decode().strip()
print(f"Chrome version: {chrome_version}")
print(f"ChromeDriver version: {chromedriver_version}")
except Exception as e:
print(f"Error checking versions: {str(e)}")
# Function to generate image URL
def generate_image(prompt):
# Log versions for debugging
log_versions()
# 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:
driver = webdriver.Chrome(options=chrome_options)
except Exception as e:
return f"Error initializing ChromeDriver: {str(e)}"
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(server_name="0.0.0.0", server_port=7860) # No share=True