Spaces:
Sleeping
Sleeping
File size: 4,071 Bytes
550d985 33af16d 550d985 b7aabc8 550d985 8830ea3 f8f569b 8830ea3 33af16d 550d985 af5e15f bbf6887 550d985 a85e152 6bd6719 f81a5ce 94f5ba9 4f83658 af5e15f 6bd6719 e0d8633 493d4bb e818063 8830ea3 b7aabc8 dfc3565 28faf6a 550d985 33af16d 550d985 636eb39 550d985 636eb39 550d985 636eb39 550d985 4e6a7d4 550d985 4e6a7d4 c809540 a85e152 f8f569b 4e6a7d4 8830ea3 550d985 | 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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | #from __future__ import annotations
from selenium import webdriver
import gradio as gr
import uuid
import re
from PIL import Image
from io import BytesIO
from pathlib import Path
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)
obj.screenshot(f'{i}-{uid}-tmp.png')
mes_box.append(f'{i}-{uid}-tmp.png')
#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() |