feat: Implement improved search service with supporting models, schemas, and API routers, and refactor site verification script.

This commit is contained in:
Michael committed 2025-11-30 23:33:05 +01:00
1 parent 4720ed6b93
commit 9855040f3e
21 files changed
+57932 -419

No files matched your search

+12 -13
View File
@@ -56,9 +56,6 @@ SITE_CONFIGS = {
"gifi.fr": {
"name": "Gifi",
"search_url": "https://www.gifi.fr/resultat-recherche?q={query}",
"product_selector": "a.link",
"product_image_selector": "img.tile-image, img[class*='product'], picture img",
"wait_selector": ".product-tile",
"category": "Discount",
"requires_proxy": False,
},
@@ -66,20 +63,13 @@ SITE_CONFIGS = {
"name": "Stokomani",
"search_url": "https://www.stokomani.fr/search?options%5Bprefix%5D=last&q={query}",
"product_selector": "div.product-card",
"product_title_selector": "h3.product-card__title a",
"product_link_selector": "h3.product-card__title a",
"product_image_selector": "div.media-wrapper img, img[class*='product-card__image']",
"wait_selector": "div.product-card",
"category": "Discount",
"requires_proxy": False,
},
"action.com": {
"name": "Action",
"search_url": "https://www.action.com/fr-fr/search/?q={query}",
"product_selector": "a.group[href^='/fr-fr/p/']",
"product_image_selector": "img[loading='lazy'], img[src*='product'], picture img",
"wait_selector": "a.group[href^='/fr-fr/p/']",
"category": "Discount",
"requires_proxy": False,
},
"lafoirfouille.fr": {
"name": "La Foir'Fouille",
"search_url": "https://www.lafoirfouille.fr/recherche?s={query}",
@@ -130,12 +120,21 @@ SITE_CONFIGS = {
"lincroyable.fr": {
"name": "L'Incroyable",
"search_url": "https://www.lincroyable.fr/recherche-query={query}/",
"product_selector": "div.tailleBlocProdNew",
"product_selector": "div.tailleBlocProdNew a",
"product_image_selector": "img.imgCoup2coeur, img[class*='product']",
"wait_selector": "div.tailleBlocProdNew",
"category": "Discount",
"requires_proxy": False,
},
"amazon.fr": {
"name": "Amazon",
"search_url": "https://www.amazon.fr/s?k={query}",
"product_selector": "div[data-component-type='s-search-result'] h2 a",
"product_image_selector": "img.s-image",
"wait_selector": "div[data-component-type='s-search-result']",
"category": "E-commerce",
"requires_proxy": False,
},
"bmstores.fr": {
"name": "B&M",
"search_url": "https://bmstores.fr/module/ambjolisearch/jolisearch?s={query}",