Agrégateur de produits québécois — www.fabri-ka.com
Python 38.4%
HTML 30.3%
TypeScript 17.2%
CSS 11%
JavaScript 3.2%
1# Connecteur Votresite.ca (Drupal + OpenCart) (`votresite`)23*Généré le 2026-08-23 16:01 par `scripts/gen_connector_docs.py` — fichier produit automatiquement, ne pas éditer à la main.*45## Mécanique / endpoint67- Boutique OpenCart montée sous `/boutique` (parfois `/produits`, `/shop`) : inventaire par `<mount>/sitemap.xml` sinon crawl des catégories `<mount>/fr` (`?limit=100&page=N`), puis fiche par fiche `…/<slug>-p<ID>/` (rendu 100 % serveur, aucune API JSON).8- Module : `fabrika/connectors/votresite.py`9- Plateformes BD routées ici : `votresite`1011**En-tête du module :**1213> Fabri-Ka — Agrégateur de produits québécois14> Auteur : Simon-Pierre Boucher — contact@spboucher.ai15> connectors/votresite.py : connecteur Votresite.ca (plateforme québécoise).16> Les sites Votresite.ca sont des Drupal 8 gérés (thème owebo-votresite) avec17> une boutique OpenCart montée dans un sous-répertoire (/boutique/ ou18> /produits/, parfois autre). Rendu 100 % serveur, aucune API JSON :19> - inventaire : <mount>/sitemap.xml (extension OpenCart, pas toujours20> activée) sinon crawl des catégories <mount>/fr + pagination21> ?limit=100&page=N ;22> - fiche : URL …/<slug>-p<ID>[c<ID>…]/ — prix courant dans <h2>…$</h2>,23> prix barré (spécial) dans <span style="text-decoration: line-through">,24> « Disponibilité: » / « Modèle: » en <li>, description div#tab-description,25> galerie <a class="thumbnail">. Les meta twitter:data1/2 servent de26> secours mais affichent le prix RÉGULIER même en solde.27> Dédup par ID produit (le même p<ID> apparaît sous plusieurs chemins de28> catégorie, ex. -p361c37c45c44).2930## Boutiques rattachées3132- Registre `data/stores.json` : **45** boutiques33- En base (table `stores`) : **45** activées, **43** avec produits3435**Top 5 par volume :**3637| Boutique | Domaine | Produits | Dernier sync | Statut |38|---|---|---|---|---|39| Bijouterie Simard | `bijouteriesimard.ca` | 488 | 2026-08-23 15:53 | ok |40| Zylvery-Bijoux Design | `zylverybijouxdesign.com` | 312 | 2026-08-23 15:36 | ok |41| AlpagAdore | `alpagadore.com` | 234 | 2026-08-23 15:43 | ok |42| Bourdeau artiste peintre | `bourdeauartistepeintre.com` | 182 | 2026-08-23 15:59 | ok |43| Les Moniales de Bethléem - CMAQ | `monasteredebethleem.ca` | 174 | 2026-08-23 15:36 | ok |4445## Volumétrie & complétude (BD live)4647| Indicateur | Valeur |48|---|---|49| Produits actifs | 3 190 |50| Prix | 95.5 % |51| Photos | 100.0 % |52| Description | 100.0 % |53| Détails (variantes/attributs) | 100.0 % |54| — dont avis (rating/review_count) | 0.0 % |55| — dont poids/dimensions | 0.0 % |5657## Gotchas5859- **Plateforme québécoise** (scripts.votresite.ca) : vitrine Drupal 8 géré (thème `owebo-votresite`) + boutique OpenCart en sous-répertoire — le montage est détecté via le registre, la page d'accueil, puis `/boutique`/`/produits`.60- **Prix : le HTML d'abord, les meta en secours** — en solde, `twitter:data1` affiche le prix RÉGULIER ; le prix courant est le `<h2>…$</h2>` de la fiche et le prix barré le `<span>` `text-decoration: line-through` (→ `compare_at_price`).61- **Titre = dernier `<h1>` sans ancre** : le premier `<h1>` est le logo du site (un lien) sur plusieurs thèmes ; `og:title` peut être du bourrage de mots-clés (ex. lemieldabee.ca).62- **Dédup par ID produit** : le même `p<ID>` apparaît sous plusieurs chemins de catégorie (`-p361c37c45c44`).63- Les URLs d'images OpenCart contiennent espaces/accents bruts (`image/cache/catalog/…`) — encodées avant stockage.6465Voir aussi : [INDEX](INDEX.md) · [transport Scrapfly](scrapfly-transport.md) · [découverte & registre](decouverte-registre.md).66