WebpageCreator / myTools /GetSVG.py
Houzeric's picture
Upload 29 files
77c658d verified
Raw
History Blame
1.93 kB
from smolagents import Tool
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from markdownify import markdownify as md
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
class GetSVG(Tool):
name = "get_svg"
description = "Lookup and search for an icon and generate the SVG code"
inputs = {
"request": {
"type": "string",
"description": "The description of the svg from GetSVGList Tool"
}
}
output_type = "string"
def forward(self, request: str) -> str:
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument(
"user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/114.0.0.0 Safari/537.36"
)
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=chrome_options)
try:
url = f"https://phosphoricons.com/?q={request}"
driver.get(url)
wait = WebDriverWait(driver, 10)
buttons = wait.until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, "button.grid-item"))
)
if not buttons:
return "Aucun résultat trouvé."
first_icon = buttons[0]
svg_element = first_icon.find_element(By.TAG_NAME, "svg")
svg_code = svg_element.get_attribute("outerHTML")
return svg_code
finally:
driver.quit()