niharika17032001's picture
Create app.py
58b06a1
import time
from io import BytesIO
import gradio as gr
from PIL import Image
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
import main_script
driver = None
def get_chrome_options():
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
return options
def set_driver():
options = get_chrome_options()
try:
web_driver = webdriver.Chrome(options=options)
web_driver.set_window_size(1080, 720) # Adjust the window size here
except WebDriverException as e:
return Image.new('RGB', (1, 1))
return web_driver
def take_screenshot(url):
global driver
try:
driver = set_driver() # Adjust the window size here
driver.get(url)
driver.implicitly_wait(10)
images = []
# Take multiple screenshots (e.g. scroll and capture 3 times)
for i in range(3):
png = driver.get_screenshot_as_png()
image = Image.open(BytesIO(png))
images.append(image)
driver.execute_script("window.scrollBy(0, window.innerHeight);")
time.sleep(1)
except WebDriverException as e:
return Image.new('RGB', (1, 1))
finally:
if driver:
driver.quit()
return images
def call_main_script():
main_script.main()
def main(url):
if url== "amit":
return call_main_script()
else:
return take_screenshot(url)
iface = gr.Interface(
fn=main,
inputs=gr.Textbox(label="Website URL", value="https://www.google.com/"),
outputs=gr.Gallery(label="Screenshots", columns=3, height="auto"),
title="Website Screenshots",
description="Take multiple screenshots of a website using Selenium in a Gradio Space!"
)
iface.launch()