mirror of
https://github.com/R0m1k3/Priceflow.git
synced 2026-10-23 15:18:12 +02:00
Merge pull request #118 from R0m1k3/claude/add-product-monitoring-01DyNDGnKBX4fHNSjAkwVckd
fix: Improve AI product price extraction for French e-commerce sites
This commit is contained in:
3 files changed
+33
-2
No files matched your search
@@ -239,7 +239,8 @@ class BrowserlessService:
|
|||||||
filename = f"{safe_name}_{timestamp}.jpg"
|
filename = f"{safe_name}_{timestamp}.jpg"
|
||||||
screenshot_path = f"{screenshots_dir}/{filename}"
|
screenshot_path = f"{screenshots_dir}/{filename}"
|
||||||
|
|
||||||
await page.screenshot(path=screenshot_path, full_page=False, quality=80, type="jpeg")
|
# Use full_page=True to capture entire page, not just viewport
|
||||||
|
await page.screenshot(path=screenshot_path, full_page=True, quality=80, type="jpeg")
|
||||||
logger.info(f"Screenshot saved to {screenshot_path}")
|
logger.info(f"Screenshot saved to {screenshot_path}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"Failed to take screenshot: {e}")
|
logger.warning(f"Failed to take screenshot: {e}")
|
||||||
|
|||||||
+2
-1
@@ -8,7 +8,8 @@ from PIL import Image
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# Image processing constants
|
# Image processing constants
|
||||||
MAX_IMAGE_SIZE = 1024
|
# Increased from 1024 to 2048 to preserve more detail for AI analysis
|
||||||
|
MAX_IMAGE_SIZE = 2048
|
||||||
JPEG_QUALITY = 85
|
JPEG_QUALITY = 85
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ def filter_relevant_text(text: str, max_length: int = 2000) -> str:
|
|||||||
|
|
||||||
# Keywords to search for (case-insensitive)
|
# Keywords to search for (case-insensitive)
|
||||||
price_keywords = [
|
price_keywords = [
|
||||||
|
# English patterns
|
||||||
r"\$\d+\.?\d*", # $XX.XX pattern
|
r"\$\d+\.?\d*", # $XX.XX pattern
|
||||||
r"\d+\.\d{2}\s*(usd|eur|gbp|cad)", # XX.XX USD pattern
|
r"\d+\.\d{2}\s*(usd|eur|gbp|cad)", # XX.XX USD pattern
|
||||||
"price:",
|
"price:",
|
||||||
@@ -78,9 +79,23 @@ def filter_relevant_text(text: str, max_length: int = 2000) -> str:
|
|||||||
"save:",
|
"save:",
|
||||||
"discount:",
|
"discount:",
|
||||||
r"\$", # Any dollar sign
|
r"\$", # Any dollar sign
|
||||||
|
# French patterns
|
||||||
|
r"€", # Euro symbol
|
||||||
|
r"\d+,\d{2}\s*€", # French format: 12,99 €
|
||||||
|
r"\d+\.\d{3},\d{2}", # French thousands: 1.234,56
|
||||||
|
r"\d+\s\d{3},\d{2}", # French thousands with space: 1 234,56
|
||||||
|
"prix", # French: price
|
||||||
|
"prix:",
|
||||||
|
"coût",
|
||||||
|
"coût:",
|
||||||
|
"promotion",
|
||||||
|
"réduction",
|
||||||
|
"économie",
|
||||||
|
"remise",
|
||||||
]
|
]
|
||||||
|
|
||||||
stock_keywords = [
|
stock_keywords = [
|
||||||
|
# English keywords
|
||||||
"add to cart",
|
"add to cart",
|
||||||
"buy now",
|
"buy now",
|
||||||
"purchase",
|
"purchase",
|
||||||
@@ -96,6 +111,20 @@ def filter_relevant_text(text: str, max_length: int = 2000) -> str:
|
|||||||
"ships",
|
"ships",
|
||||||
"delivery",
|
"delivery",
|
||||||
"get it by",
|
"get it by",
|
||||||
|
# French keywords
|
||||||
|
"ajouter au panier",
|
||||||
|
"acheter",
|
||||||
|
"commander",
|
||||||
|
"en stock",
|
||||||
|
"rupture",
|
||||||
|
"rupture de stock",
|
||||||
|
"disponible",
|
||||||
|
"indisponible",
|
||||||
|
"épuisé",
|
||||||
|
"être averti",
|
||||||
|
"précommande",
|
||||||
|
"livraison",
|
||||||
|
"expédié",
|
||||||
]
|
]
|
||||||
|
|
||||||
all_keywords = price_keywords + stock_keywords
|
all_keywords = price_keywords + stock_keywords
|
||||||
|
|||||||
Reference in new issue
Block a user