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()