SPB Git forge

spb/fabri-ka

Public

Agrégateur de produits québécois — www.fabri-ka.com

217commits 1branches 0releases
66.1 MBsize
maindefault branch
6 h agolast push
Python 38.4% HTML 30.3% TypeScript 17.2% CSS 11% JavaScript 3.2%

[ka6] fix connecteur boutiquesoha.com: le repli Scrapfly échouait en 422 ERR::SCRAPE::COUNTRY_NOT_AVAILABLE_FOR_TARGET (cible restreinte aux proxys us, transport forçait country=ca) — retry avec le pays permis extrait du message d'erreur; 464 produits en direct ET via Scrapfly (médiane 464)

Simon-Pierre Boucher committed 1 mo ago (Aug 23, 2026) parent a4c89dd

1 changed file +16 −0

modified fabrika/connectors/scrapfly.py +16 −0
@@ -10,6 +10,7 @@ from __future__ import annotations
10 10
11 11 import json
12 12 import os
13 +import re
13 14 import threading
14 15 import time
15 16
@@ -39,6 +40,21 @@ def scrapfly_get(url: str, render_js: bool = False, timeout: int = 150) -> tuple
39 40 if render_js:
40 41 params["render_js"] = "true"
41 42 r = requests.get(API, params=params, timeout=timeout)
43 + if r.status_code == 422:
44 + # certaines cibles restreignent les pays de proxy Scrapfly (ex.
45 + # boutiquesoha.com → us seulement) : l'erreur 422
46 + # ERR::SCRAPE::COUNTRY_NOT_AVAILABLE_FOR_TARGET liste les pays permis,
47 + # on réessaie avec le premier au lieu d'échouer.
48 + try:
49 + err = r.json().get("result", {}).get("error") or {}
50 + except ValueError:
51 + err = {}
52 + if err.get("code") == "ERR::SCRAPE::COUNTRY_NOT_AVAILABLE_FOR_TARGET":
53 + m = re.search(r"restricted to following countries:\s*([a-zA-Z, ]+)",
54 + err.get("message", ""))
55 + if m:
56 + params["country"] = m.group(1).split(",")[0].strip().lower()
57 + r = requests.get(API, params=params, timeout=timeout)
42 58 r.raise_for_status()
43 59 res = r.json().get("result", {})
44 60 content = res.get("content") or ""
45 61