Omnibus's picture
Update app.py
636eb39 verified
raw
history blame
4.07 kB
#from __future__ import annotations
from selenium import webdriver
from PIL import Image
import gradio as gr
import uuid
import re
from PIL import Image
from io import BytesIO
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
#from selenium_webdriver import WebElement
driver_type = 'chromedriver'
driver=False
def get_concat_h_cut(im1, im2):
dst = Image.new('RGB', (im1.width + im2.width,
min(im1.height, im2.height)))
dst.paste(im1, (0, 0))
dst.paste(im2, (im1.width, 0))
return dst
def get_concat_v_cut(im1, im2):
dst = Image.new(
'RGB', (min(im1.width, im2.width), im1.height + im2.height))
dst.paste(im1, (0, 0))
dst.paste(im2, (0, im1.height))
return dst
def run_script(url: str, height: int, width: int):
mes_box=[]
uid=uuid.uuid4()
is_url=True
if is_url:
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
try:
driver = webdriver.Chrome(options=options)
driver.get(url)
html=driver.page_source
#print (driver.html)
driver.implicitly_wait(30)
driver.set_window_size(int(width), int(height))
page = driver.find_element(By.TAG_NAME, "html")
print (dir(page))
print (page.text)
driver.execute_script("arguments[0].theme = 'gab-black';",page)
#driver.execute_script("arguments[0].theme = 'gab-black';",page)
obj = driver.find_element(By.CLASS_NAME, "main")
messages = driver.find_elements(By.CLASS_NAME, "message")
print (len(messages))
for i,mes in enumerate(messages):
print (mes.text)
mes_shot = obj.screenshot(f'{i}{uid}-tmp.png')
mes_box.append(mes_shot)
#obj = driver.find_element(By.ID, "app-container")
#obj = driver.find_element(By.ID, "conversation-feed")
#obj = driver.find_element_by_id("in_html")
######################
#inp = driver.find_element("id","input")
'''
find_element(By.ID, "id")
find_element(By.NAME, "name")
find_element(By.XPATH, "xpath")
find_element(By.LINK_TEXT, "link text")
find_element(By.PARTIAL_LINK_TEXT, "partial link text")
find_element(By.TAG_NAME, "tag name")
find_element(By.CLASS_NAME, "class name")
find_element(By.CSS_SELECTOR, "css selector")
'''
#inp.send_keys("test")
######################
cookie_jar = []
#cookie_jar.append(driver.get_cookies())
#print(cookie_jar)
screenshot = obj.screenshot(f'{uid}-tmp.png')
#screenshot = obj.get_screenshot_as_png()
except WebDriverException as e:
return Image.new('RGB', (1, 1)), f'<center>{e}',mes_box
finally:
if driver:
driver.quit()
#return [Image.open(BytesIO(screenshot)), 'operation success.',cookie_jar,html]
return Image.open(f'{uid}-tmp.png'), '<center>operation success.',mes_box
else:
return None, '<center>Please enter a valid URL of a website/host.',mes_box
with gr.Blocks() as app:
with gr.Row():
with gr.Column():
inp = gr.Textbox(label="URL",lines=1)
btn= gr.Button()
with gr.Column():
with gr.Row():
height=gr.Number(label="Height", value=4096)
width=gr.Number(label="Width",value=800)
message=gr.HTML('<center>Enter URL')
with gr.Row():
outim = gr.Image()
outgal=gr.Gallery()
btn.click(run_script,[inp,height,width],[outim,message,outgal])
app.launch()