Spaces:
Runtime error
Runtime error
File size: 5,169 Bytes
550d985 33af16d 550d985 753ce1e 550d985 c93723f 550d985 753ce1e c93723f 8a85d52 c93723f 8a85d52 05550f1 c93723f 753ce1e 33af16d 753ce1e 550d985 753ce1e 550d985 753ce1e 550d985 a85e152 753ce1e e0d8633 753ce1e 33af16d 550d985 a2b5996 550d985 753ce1e 550d985 753ce1e 550d985 4e6a7d4 550d985 4e6a7d4 e7786c5 b5933ff 4e6a7d4 c809540 753ce1e a415e00 c809540 a85e152 f8f569b 4e6a7d4 753ce1e 05550f1 c93723f a2b5996 |
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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
#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
from html2image import Html2Image
hti = Html2Image()
driver_type = 'chromedriver'
driver=False
def html2im(html,css=None):
html = html
#css = css
#hti.screenshot(html_str=html, save_as='red_page.png')
hti.screenshot(html_str=html, css_str=css, save_as='red_page.png')
return 'red_page.png'
def get_concat_h_cut(in1, in2):
im1=Image.open(in1)
im2=Image.open(in2)
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(in1, in2):
im1=Image.open(in1)
im2=Image.open(in2)
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, check_b,check_h):
mes_box=[]
out_box=[]
uid=uuid.uuid4()
out=None
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')
mes='<center>operation success'
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")
#driver.execute_script("arguments[0].style.background = 'blue';",page)
main_head = driver.find_element(By.CLASS_NAME, "main-content-header")
head_shot = main_head.screenshot(f'head-{uid}-tmp.png')
obj = driver.find_element(By.CLASS_NAME, "main")
messages = driver.find_elements(By.CLASS_NAME, "message")
for i,ea in enumerate(check_b):
try:
ea = int(ea)
ea = (ea*2)-2
print (ea)
messages[ea].screenshot(f'{i}-{uid}-tmp.png')
messages[ea+1].screenshot(f'{i+1}-{uid}-tmp.png')
im_roll = get_concat_v_cut(f'{i}-{uid}-tmp.png',f'{i+1}-{uid}-tmp.png')
im_roll.save(f'comb{i}-{uid}-tmp.png')
out_box.append(f'comb{i}-{uid}-tmp.png')
except Exception:
mes="<center>Some blocks returned an error"
if out_box:
if len(out_box)>1:
im_roll = get_concat_v_cut(f'{out_box[0]}',f'{out_box[1]}')
im_roll.save(f'comb-{uid}-tmp.png')
for i in range(2,len(out_box)):
im_roll = get_concat_v_cut(f'comb-{uid}-tmp.png',f'{out_box[i]}')
im_roll.save(f'comb-{uid}-tmp.png')
out = f'comb-{uid}-tmp.png'
else:
tmp_im = Image.open(out_box[0])
tmp_im.save(f'comb-{uid}-tmp.png')
out = f'comb-{uid}-tmp.png'
if check_h:
head_paste = get_concat_v_cut(f'head-{uid}-tmp.png',f'comb-{uid}-tmp.png')
head_paste.save(f'comb-{uid}-tmp.png')
out = f'comb-{uid}-tmp.png'
screenshot = obj.screenshot(f'{uid}-tmp.png')
except WebDriverException as e:
return Image.new('RGB', (1, 1)), f'<center>Please enter a valid URL of a website/host.',out_box,out
finally:
if driver:
driver.quit()
return Image.open(f'{uid}-tmp.png'), mes,out_box,out
else:
return None, '<center>Please enter a valid URL of a website/host.',out_box,out
with gr.Blocks() as app:
with gr.Row():
with gr.Column():
inp = gr.Textbox(label="URL (must be Public)",lines=1)
css_inp=gr.Textbox(label="CSS")
btn= gr.Button()
with gr.Column():
check_h=gr.Checkbox(label="Show Header", value=True)
check_b=gr.CheckboxGroup(label="Chatblocks", choices=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20], value=[1])
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():
with gr.Column():
out=gr.Image()
outgal=gr.Gallery()
outim = gr.Image()
btn.click(html2im,[inp,css_inp],out)
#btn.click(run_script,[inp,height,width,check_b,check_h],[outim,message,outgal,out])
app.queue(default_concurrency_limit=5).launch() |