fix : chromedriver bug

This commit is contained in:
martin legrand 2025-03-19 09:41:48 +01:00
commit 80071fbeaa
5 changed files with 22 additions and 13 deletions

View File

@ -2,10 +2,10 @@
is_local = True is_local = True
provider_name = ollama provider_name = ollama
provider_model = deepseek-r1:14b provider_model = deepseek-r1:14b
provider_server_address = 127.0.0.1:5000 provider_server_address = 127.0.0.1:11434
agent_name = Friday agent_name = Friday
recover_last_session = True recover_last_session = True
save_session = False save_session = False
speak = True speak = True
listen = False listen = False
work_dir = /Users/mlg/Documents/A-project/AI/Agents/agenticSeek/ai_workplace work_dir = /Users/mlg/Documents/ai_workplace

View File

@ -19,6 +19,7 @@ pyaudio==0.2.14
librosa==0.10.2.post1 librosa==0.10.2.post1
selenium==4.29.0 selenium==4.29.0
markdownify==1.1.0 markdownify==1.1.0
chromedriver-autoinstaller==0.6.4
httpx>=0.27,<0.29 httpx>=0.27,<0.29
anyio>=3.5.0,<5 anyio>=3.5.0,<5
distro>=1.7.0,<2 distro>=1.7.0,<2
@ -29,4 +30,4 @@ tqdm>4
ordered_set ordered_set
pypinyin pypinyin
cn2an cn2an
jieba jieba

View File

@ -5,6 +5,7 @@ from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, WebDriverException from selenium.common.exceptions import TimeoutException, WebDriverException
import chromedriver_autoinstaller
import time import time
import os import os
import shutil import shutil
@ -38,10 +39,16 @@ class Browser:
chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-dev-shm-usage")
# Automatically find ChromeDriver path
chromedriver_path = shutil.which("chromedriver") chromedriver_path = shutil.which("chromedriver") # system installed driver.
#If not found, try auto-installing the correct version
if not chromedriver_path:
chromedriver_path = chromedriver_autoinstaller.install()
if not chromedriver_path: if not chromedriver_path:
raise FileNotFoundError("ChromeDriver not found. Please install it or add it to your PATH.") raise FileNotFoundError("ChromeDriver not found. Please install it or add it to your PATH.")
service = Service(chromedriver_path) service = Service(chromedriver_path)
self.driver = webdriver.Chrome(service=service, options=chrome_options) self.driver = webdriver.Chrome(service=service, options=chrome_options)
self.wait = WebDriverWait(self.driver, 10) self.wait = WebDriverWait(self.driver, 10)

View File

@ -61,7 +61,7 @@ class AgentRouter:
result = self.classify_text(text) result = self.classify_text(text)
for agent in self.agents: for agent in self.agents:
if result["labels"][0] == agent.role: if result["labels"][0] == agent.role:
pretty_print(f"Selected agent: {agent.agent_name}", color="warning") pretty_print(f"Selected agent: {agent.agent_name} (roles: {agent.role})", color="warning")
return agent return agent
return None return None

View File

@ -4,6 +4,7 @@ import soundfile as sf
import subprocess import subprocess
import re import re
import platform import platform
from sys import modules
class Speech(): class Speech():
""" """
@ -24,7 +25,7 @@ class Speech():
self.voice = self.voice_map[language][2] self.voice = self.voice_map[language][2]
self.speed = 1.2 self.speed = 1.2
def speak(self, sentence: str, voice_number: int = 1): def speak(self, sentence: str, voice_number: int = 1 , audio_file: str = 'sample.wav'):
""" """
Convert text to speech using an AI model and play the audio. Convert text to speech using an AI model and play the audio.
@ -38,17 +39,17 @@ class Speech():
sentence, voice=self.voice, sentence, voice=self.voice,
speed=self.speed, split_pattern=r'\n+' speed=self.speed, split_pattern=r'\n+'
) )
for i, (gs, ps, audio) in enumerate(generator): for i, (_, _, audio) in enumerate(generator):
audio_file = 'sample.wav' if 'ipykernel' in modules: #only display in jupyter notebook.
display(Audio(data=audio, rate=24000, autoplay=i==0), display_id=False) display(Audio(data=audio, rate=24000, autoplay=i==0), display_id=False)
sf.write(audio_file, audio, 24000) # save each audio file sf.write(audio_file, audio, 24000) # save each audio file
if platform.system().lower() == "windows": if platform.system().lower() == "windows":
import winsound import winsound
winsound.PlaySound(audio_file, winsound.SND_FILENAME) winsound.PlaySound(audio_file, winsound.SND_FILENAME)
elif platform.system().lower() == "linux": elif platform.system().lower() == "darwin": # macOS
subprocess.call(["aplay", audio_file])
else:
subprocess.call(["afplay", audio_file]) subprocess.call(["afplay", audio_file])
else: # linux or other.
subprocess.call(["aplay", audio_file])
def replace_url(self, url: re.Match) -> str: def replace_url(self, url: re.Match) -> str:
""" """