SPB Git

spb/crea-ka

Public

Créa·Ka — annuaire public cross-plateforme des créateurs de contenu québécois (crea-ka.com)

History of creaka/connectors Clear filter
page 1
  1. Sat, Aug 22, 2026 1

    1. connecteurs: chaine de fetch anti-bot resiliente (Oxylabs->Scrapfly->Bright Data)
      …
      Auto-escalade de BaseConnector.get() sur blocage (403/429/503/challenge CF)
      ou coupure reseau, via connectors/_resilient.py. Cles lues de l env avec repli
      sur ~/.claude/.env (accepte SCRAPFLY_KEY et SCRAPFLY_API_KEY). Reponse
      compatible requests.Response; coupe-circuit par hote. Aucun connecteur modifie.
      
      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
      Simon-Pierre Boucher · 2 files +386
  2. Fri, Aug 21, 2026 3

  3. Thu, Aug 20, 2026 3

    1. Périmètre QC : garde-fous snowball-ig + purge 4 605 fiches hors-Québec
      …
      La boule de neige IG (profils reliés) ramenait les vedettes mondiales
      (cristiano, selenagomez, bellahadid…) et _find_existing exigeait une
      confiance forte des deux côtés, créant des doublons orphelins. Correctifs :
      - snowball : filtre is_quebec obligatoire + blocklist organismes/marques/
        médias/partis QC (villes, tourisme, ministères… ne sont pas des créateurs)
      - _QC_MARKERS : « queb » nu matchait « QUEBra » (pt) et « jacQUEBrazil » →
        « quebec » complet ou « queb » en fin de mot (vague 4)
      - db : rapprochement par compte identique (plateforme+handle) sans condition
        de confiance — fini les secondes fiches qui volaient le compte (691 cas)
      - purge base : 4 439 snowball hors-QC, 95 organismes QC non-créateurs,
        1 182 orphelines/doublons → 12 445 créateurs propres
      - tests/test_perimetre_qc.py : régressions vedettes, organismes, faux
        positifs de marqueur, anti-doublons
      
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher · 2 files +48 −12
  4. Tue, Aug 18, 2026 6

    1. crea-ka: couverture 13 plateformes (Apify) + refresh auto 7j + max-parallélisme
      …
      - +patreon-apify +discord-apify (code invit sensible à la casse via URL)
      - run_actor_sharded : N runs parallèles (défaut 32x2Go), retry+jitter, hook target_of
      - rotation hebdo (APIFY_REVISIT_DAYS=7) : le watch PM2 quotidien couvre tout le bassin en <=7j
      - +tavily-seed (1271 graines moissonnées) +snowball-ig (related_profiles) pour lexpansion
      - frontend : stats/badges/contenu récent par plateforme
      
      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
      Simon-Pierre Boucher · 3 files +296 −37
    2. crea-ka: 12 connecteurs Apify maison (enrichissement multi-plateforme ultra détaillé)
      …
      Acteurs KA (compte Apify gorgeous_thistle, proxy résidentiel) branchés comme
      connecteurs denrichissement:
      - instagram/tiktok/x/youtube/twitch/kick/facebook/threads/snapchat/fansly-apify
      - profils détaillés: abonnés, bio, badges, engagement, cadence + contenu récent
        (posts/vidéos/tweets avec likes/commentaires/vues), liens croisés (cross_link)
      - rotation par fraîcheur (revisit_days), garde-fous Scrapfly (_fresh 72h)
      - onlyfans-apify + instagram-decouverte présents mais hors ordre auto
        (SPA / topsearch fermé aux sessions anonymes)
      
      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
      Simon-Pierre Boucher · 3 files +491
    3. Vague 4 — expansion massive : twitch-decouverte + kick-decouverte (Scrapfly), YT 1361 requêtes (bloc EN, 13 thèmes×56 villes, +100 passe-temps), iTunes 146 requêtes, +5 catégories Wikipédia, enrichisseur region-bio (ville déclarée en bio → région §7)
      …
      +3 596 créateurs (5 841 → 9 437), +3 684 comptes (10 512). Twitch 292, Kick 122 comptes. region-bio : 1 391 fiches localisées. Avatars 96,5 %.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 6 files +648 −2
    4. Vague 3 : Twitch GQL public sans clé (abonnés), stats YouTube sans clé (InnerTube), découvertes wikipedia-qc + palmares-apple, fix marqueurs QC
      …
      - twitch : plus de SkipSource — API GQL publique du site (Client-ID public,
        requêtes groupées 20/POST) : abonnés, bio, avatar, partenaire/affilié,
        dernière diffusion ; voie Helix officielle conservée si clés fournies ;
        repli curl-binaire si empreinte TLS refusée. 21/26 comptes avec abonnés.
      - youtube : voie publique complète sans clé — page de chaîne + InnerTube
        browse du panneau À propos (vues totales, nb vidéos, pays) + page /videos
        (date de la dernière vidéo → dormant >12 mois) ; bannière, avatar,
        description → bio ; cap 300 chaînes/passage, rotation 14 j (yt_checked).
        Passage initial : 264 chaînes (vues+vidéos 264, last_video 261, bannières 245).
      - wikipedia-qc (découverte) : catégories fr+en de créateurs QC (API MediaWiki)
        → marqueur QC obligatoire pour les catégories pan-canadiennes → handles
        sociaux curés Wikidata (P2003/P7085/P2397/P2002/P5797/P2013 + P856) ;
        décédés exclus, is_minor via P569. 76 nouvelles fiches + 35 fusions.
      - palmares-apple (découverte) : top 100 podcasts Canada (API marketing
        officielle Apple, sans clé) + lookup groupé + attribution QC prudente
        (langue fr ET marqueur dans l en-tête du flux). Spotify charts (API morte),
        ADISQ (SPA sans liens) et Bible urbaine (prose sans handles) évalués et
        écartés — documenté dans sources.json.
      - fix _QC_MARKERS : frontières de mot (« levis » matchait teLEVISion,
        « estrie » tapESTRIEs) — faux positifs purgés de la base.
      - sources.json (16 sources), docs connecteurs régénérées, tests vague 3
        (46 verts).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 5 files +815 −53
    5. Vague 2 : balados-rss (RSS sans clé), Podcast Index (prêt — clés requises), abonnés X sans clé, bio-liens, plateformes spotify/discord/apple-podcasts
      …
      - balados-rss : flux RSS auto-déclarés (cap 150/passage, re-visite 7 j, fetch
        parallèle poli, repli regex) → épisodes réels, dernier épisode/dormant,
        pochette→avatar, description→bio, catégories→niches, <link>→site-web
        (portails partagés et domaines de plateformes exclus — anti-fusion §12.2)
      - podcastindex : connecteur complet API officielle, sauté proprement sans
        clés (SkipSource) ; PODCASTINDEX_API_KEY/SECRET dans .env.example
      - x-profil : abonnés/abonnements/badge X via le service public de syndication
        (widgets officiels) + repli page x.com ; fetch via curl (requests 429-é par
        empreinte TLS, constaté) ; followbutton mort et Facebook bloqué → documenté
      - bio-liens : liaison croisée conservatrice depuis les URLs complètes des
        bios déjà stockées (cross_link, cap 5/fiche, jamais de @handle textuel)
      - normalize/frontend : plateformes spotify, discord, apple-podcasts→podcast
        (fusion par collectionId) ; icônes simple-icons ; PLAT du SPA
      - sources.json : 4 nouvelles sources documentées ; tests vague 2 (35 verts)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 4 files +654
    6. Correctifs audit : fix 500 threads, durées sync, twitch sauté proprement, onlyqueb RSC, avatars YouTube, balados enrichis, archivage §13
      …
      - web.py : connexion SQLite PAR THREAD (threading.local) — corrige le 500
        intermittent sur /api/stats (curseurs entrelacés sur connexion partagée)
      - db.py : sync_log.seconds/errors réels persistés ; log des comptes retirés
        dans _write_creator ; archive_missing() (§13 — non revu depuis 72 h →
        inactive, réversible au retour, opt-out intouchés)
      - ingest.py : durée+erreurs transmises à sync_source ; archivage en fin de
        passage complet ; SkipSource journalisé sans fausse alerte
      - twitch : clés absentes → SkipSource (« sauté : clés manquantes »), plus de
        run 0 ni d alerte « source bloquée »
      - onlyqueb : parseur du payload Next.js/RSC — displayName réel, bio+headline,
        categories→niches, mym/fansly/ofUrl→comptes, websiteUrl→compte site-web
      - normalize : plateformes mym + fansly (URL canoniques + détection)
      - dedup : le statut de l observation fraîche gagne (dormant/retour) ; un vrai
        nom public remplace un display_name pseudo-handle
      - youtube-recherche : avatar_url extrait du channelRenderer (meilleure rés.)
      - balados-itunes : feed_url/artist_id/last_episode dans le doc, genres[]
        complets → niches, dormant >12 mois → status inactive (§13)
      - wikidata-qc : échec SPARQL journalisé + compté dans sync_log.errors
      - frontend : libellés MYM/Fansly
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 6 files +126 −13
  5. Mon, Aug 17, 2026 2

    1. feat(youtube-recherche): profondeur — pagination par continuations (~4 pages/requête, 5x le rendement de découverte)
      …
      - API interne de la page publique (INNERTUBE) pour les pages 2-4 de chaque requête
      - fix: IDs de chaîne UC… — casse préservée + URL /channel/ canonique
      - fix: parse_count ne lit plus un handle comme un compteur (bug 5 G abonnés)
      - cartes de comptes : pastille de confiance sur sa propre ligne
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +77 −28
    2. Simon-Pierre Boucher · 12 files +1,371
Menu

Theme