mirror of
https://github.com/BoPeng/ai-marketplace-monitor.git
synced 2025-12-23 14:18:11 -05:00
Allow different browsers
This commit is contained in:
@@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.9.11]
|
||||
|
||||
- [Issue 264](https://github.com/BoPeng/ai-marketplace-monitor/pull/264). Support different browsers.
|
||||
|
||||
## [0.9.10]
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[project]
|
||||
readme = "README.md"
|
||||
name = "ai-marketplace-monitor"
|
||||
version = "0.9.10"
|
||||
version = "0.9.11"
|
||||
description = "An AI-based tool for monitoring facebook marketplace"
|
||||
authors = [{ name = "Bo Peng", email = "ben.bob@gmail.com" }]
|
||||
requires-python = ">=3.10"
|
||||
@@ -47,6 +47,7 @@ Documentation = "https://ai-marketplace-monitor.readthedocs.io"
|
||||
|
||||
[project.scripts]
|
||||
ai-marketplace-monitor = "ai_marketplace_monitor.cli:app"
|
||||
aimm = "ai_marketplace_monitor.cli:app"
|
||||
|
||||
[project.optional-dependencies]
|
||||
pynput = ["pynput>=1.7.0"]
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
__author__ = """Bo Peng"""
|
||||
__email__ = "ben.bob@gmail.com"
|
||||
__version__ = "0.9.10"
|
||||
__version__ = "0.9.11"
|
||||
|
||||
@@ -87,6 +87,35 @@ class MarketplaceMonitor:
|
||||
doze(60, self.config_files, self.keyboard_monitor)
|
||||
continue
|
||||
|
||||
def _launch_browser(self: "MarketplaceMonitor") -> Browser:
|
||||
"""Launch a browser, preferring Chromium if available, otherwise any installed browser."""
|
||||
# Try browsers in order of preference
|
||||
browser_types = [
|
||||
("chromium", self.playwright.chromium),
|
||||
("firefox", self.playwright.firefox),
|
||||
("webkit", self.playwright.webkit),
|
||||
]
|
||||
|
||||
for browser_name, browser_type in browser_types:
|
||||
try:
|
||||
if self.logger:
|
||||
self.logger.debug(f"Attempting to launch {browser_name} browser...")
|
||||
browser = browser_type.launch(headless=self.headless)
|
||||
if self.logger:
|
||||
self.logger.info(
|
||||
f"""{hilight("[Browser]", "info")} Successfully launched {browser_name} browser."""
|
||||
)
|
||||
return browser
|
||||
except Exception as e:
|
||||
if self.logger:
|
||||
self.logger.debug(f"Failed to launch {browser_name}: {e}")
|
||||
continue
|
||||
|
||||
# If all fail, raise an error
|
||||
raise RuntimeError(
|
||||
"No browser could be launched. Please ensure Chromium, Firefox, or WebKit is installed."
|
||||
)
|
||||
|
||||
def load_ai_agents(self: "MarketplaceMonitor") -> None:
|
||||
"""Load the AI agent."""
|
||||
assert self.config is not None
|
||||
@@ -394,7 +423,7 @@ class MarketplaceMonitor:
|
||||
# Open a new browser page.
|
||||
self.load_config_file()
|
||||
assert self.config is not None
|
||||
self.browser = self.playwright.chromium.launch(headless=self.headless)
|
||||
self.browser = self._launch_browser()
|
||||
#
|
||||
assert self.browser is not None
|
||||
while True:
|
||||
@@ -550,7 +579,7 @@ class MarketplaceMonitor:
|
||||
self.logger.info(
|
||||
f"""{hilight("[Search]", "info")} Starting a browser because the item was not checked before."""
|
||||
)
|
||||
self.browser = self.playwright.chromium.launch(headless=self.headless)
|
||||
self.browser = self._launch_browser()
|
||||
marketplace.set_browser(self.browser)
|
||||
|
||||
# ignore enabled
|
||||
|
||||
@@ -13,7 +13,7 @@ from ai_marketplace_monitor.user import User
|
||||
|
||||
def test_version(version: str) -> None:
|
||||
"""Sample pytest test function with the pytest fixture as an argument."""
|
||||
assert version == "0.9.10"
|
||||
assert version == "0.9.11"
|
||||
|
||||
|
||||
def test_listing_cache(temp_cache: Cache, listing: Listing) -> None:
|
||||
|
||||
Reference in New Issue
Block a user