Commit
·
ab49d88
1
Parent(s):
2cbb2ea
Add webpage load timeout
Browse files
app.py
CHANGED
|
@@ -6,6 +6,7 @@ import streamlit as st
|
|
| 6 |
from PIL import Image
|
| 7 |
from google.genai import Client, types
|
| 8 |
from selenium import webdriver
|
|
|
|
| 9 |
from selenium.webdriver.chrome.options import Options
|
| 10 |
from selenium.webdriver.chrome.service import Service
|
| 11 |
from webdriver_manager.chrome import ChromeDriverManager
|
|
@@ -22,18 +23,20 @@ def take_screenshot(url):
|
|
| 22 |
options.add_argument("--headless")
|
| 23 |
options.add_argument("--disable-gpu")
|
| 24 |
options.add_argument("--start-maximized")
|
|
|
|
| 25 |
driver = webdriver.Chrome(service=Service(ChromeDriverManager(chrome_type="chromium").install()), options=options)
|
|
|
|
|
|
|
| 26 |
driver.get(url)
|
| 27 |
|
| 28 |
-
sleep(3) # Wait for the page to render
|
| 29 |
-
|
| 30 |
total_height = driver.execute_script("return document.body.scrollHeight")
|
| 31 |
driver.set_window_size(1280, total_height)
|
|
|
|
| 32 |
screenshot_png = driver.get_screenshot_as_png()
|
| 33 |
driver.quit()
|
|
|
|
| 34 |
image = Image.open(io.BytesIO(screenshot_png))
|
| 35 |
-
|
| 36 |
-
return image
|
| 37 |
|
| 38 |
|
| 39 |
def sanitize_url(url):
|
|
@@ -61,6 +64,9 @@ def roast(url):
|
|
| 61 |
|
| 62 |
try:
|
| 63 |
image = take_screenshot(url)
|
|
|
|
|
|
|
|
|
|
| 64 |
except:
|
| 65 |
st.error("Invalid URL.")
|
| 66 |
return
|
|
|
|
| 6 |
from PIL import Image
|
| 7 |
from google.genai import Client, types
|
| 8 |
from selenium import webdriver
|
| 9 |
+
from selenium.common import TimeoutException
|
| 10 |
from selenium.webdriver.chrome.options import Options
|
| 11 |
from selenium.webdriver.chrome.service import Service
|
| 12 |
from webdriver_manager.chrome import ChromeDriverManager
|
|
|
|
| 23 |
options.add_argument("--headless")
|
| 24 |
options.add_argument("--disable-gpu")
|
| 25 |
options.add_argument("--start-maximized")
|
| 26 |
+
|
| 27 |
driver = webdriver.Chrome(service=Service(ChromeDriverManager(chrome_type="chromium").install()), options=options)
|
| 28 |
+
driver.set_page_load_timeout(10)
|
| 29 |
+
driver.implicitly_wait(10)
|
| 30 |
driver.get(url)
|
| 31 |
|
|
|
|
|
|
|
| 32 |
total_height = driver.execute_script("return document.body.scrollHeight")
|
| 33 |
driver.set_window_size(1280, total_height)
|
| 34 |
+
|
| 35 |
screenshot_png = driver.get_screenshot_as_png()
|
| 36 |
driver.quit()
|
| 37 |
+
|
| 38 |
image = Image.open(io.BytesIO(screenshot_png))
|
| 39 |
+
return image.convert("RGB")
|
|
|
|
| 40 |
|
| 41 |
|
| 42 |
def sanitize_url(url):
|
|
|
|
| 64 |
|
| 65 |
try:
|
| 66 |
image = take_screenshot(url)
|
| 67 |
+
except TimeoutException:
|
| 68 |
+
st.error("Website timed out.")
|
| 69 |
+
return
|
| 70 |
except:
|
| 71 |
st.error("Invalid URL.")
|
| 72 |
return
|