Spaces:
Paused
Paused
| #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 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 run_script(html: str, style: str,font_col,back_col): | |
| uid=uuid.uuid4() | |
| font_col=font_col.strip("#") | |
| back_col=back_col.strip("#") | |
| html = html.replace("\n","<br>") | |
| #regex = r"^(https?://)" | |
| #is_url = re.search(regex, text) | |
| 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: | |
| url = f"https://omnibus-txt2img-static.static.hf.space/index.html?format=color:{font_col};background-color:{back_col};{style}&txt={html}" | |
| driver = webdriver.Chrome(options=options) | |
| driver.get(url) | |
| #html=driver.page_source | |
| driver.implicitly_wait(30) | |
| driver.set_window_size(1920, 4096) | |
| obj = driver.find_element(By.NAME, "in_card") | |
| #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)), e, None,None] | |
| finally: | |
| if driver: | |
| driver.quit() | |
| #return [Image.open(BytesIO(screenshot)), 'operation success.',cookie_jar,html] | |
| return [Image.open(f'{uid}-tmp.png'), 'operation success.',url,html] | |
| else: | |
| return [None, 'Please enter a valid URL of a website/host.',None,None] | |
| html="""<h1>This is the title</h1> | |
| This is some information | |
| bla bla | |
| • a bullet | |
| • or two | |
| """ | |
| sty="""height:500;width:1000;""" | |
| with gr.Blocks() as app: | |
| with gr.Row(): | |
| inp = gr.Textbox(label="HTML",lines=8,max_lines=50,value=html) | |
| with gr.Column(): | |
| style = gr.Textbox(label="CSS",lines=8,max_lines=50,value=sty) | |
| with gr.Row(): | |
| font_col=gr.ColorPicker(label="Font Color",value="#000000") | |
| back_col=gr.ColorPicker(label="Background Color",value="#ffffff") | |
| btn= gr.Button() | |
| with gr.Row(): | |
| with gr.Column(): | |
| outim = gr.Image() | |
| with gr.Column(): | |
| outp = gr.HTML() | |
| cook = gr.Textbox(label="URL") | |
| html=gr.Textbox(visible=False) | |
| btn.click(run_script,[inp,style,font_col,back_col],[outim,outp,cook,html]) | |
| app.launch() |