|
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 GetSVGList(Tool): |
|
name = "get_svg_list" |
|
description = "Get list of svg available to generate it with GetSVG Tool" |
|
|
|
inputs = { |
|
|
|
} |
|
|
|
output_type = "array" |
|
|
|
def forward(self) -> 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 = "https://phosphoricons.com/" |
|
driver.get(url) |
|
|
|
wait = WebDriverWait(driver, 10) |
|
name_elements = wait.until( |
|
EC.presence_of_all_elements_located((By.CSS_SELECTOR, "span.name")) |
|
) |
|
|
|
icon_names = [el.text.strip() for el in name_elements if el.text.strip()] |
|
return icon_names |
|
if not icon_names: |
|
return "Aucun nom d'icône trouvé." |
|
|
|
return "\n".join(icon_names) |
|
finally: |
|
driver.quit() |
|
|