À propos du projet
discolike-python est le SDK Python officiel et la CLI pour l’API DiscoLike, un moteur de recherche professionnel qui indexe plus de 80 millions de sites web d’entreprises dans le monde, en 50 langues. Le dépôt fournit deux paquets : discolike (la bibliothèque SDK) et discolike-cli (l’interface en ligne de commande, qui dépend du SDK). Les deux nécessitent Python 3.10+.
Le SDK propose un client typé (Discolike) et une version asynchrone (AsyncDiscolike) pour interagir avec l’API DiscoLike. Les fonctionnalités principales incluent la découverte d’entreprises similaires à partir de texte ICP, d’expressions, de stack technique, de géographie et de plus de 40 autres filtres ; le comptage de segments avant de les extraire ; la correspondance de noms d’entreprises imprécis (avec téléphone, ville, état facultatifs) vers des domaines, en mode unique ou CSV ; l’enrichissement de listes CSV de domaines avec les jeux de données DiscoLike ; la segmentation automatique de listes de domaines ; la validation de listes de domaines par rapport à des définitions ICP ; la récupération de profils complets d’entreprises avec données firmographiques, scores, données de croissance, redirections, fournisseurs et filiales ; la recherche, la consultation, la correspondance et la découverte de contacts dans les entreprises cibles ; et l’exécution de recherches DiscoGen sur des ensembles de domaines avec recherche web activée.
L’authentification prend en charge trois méthodes : l’inscription (ouvre un compte à partir d’un e-mail et d’un nom sans navigateur, le propriétaire confirmant par e-mail), la connexion OAuth (flux d’autorisation PKCE avec redirect loopback dans le navigateur, ou mode sans tête qui imprime l’URL) et la clé API (via la variable d’environnement DISCOLIKE_API_KEY, le fichier de configuration CLI ou un paramètre explicite). Les identifiants OAuth sont rafraîchis de manière proactive 60 secondes avant leur expiration, puis une nouvelle fois après un 401. Le client permet également d’apporter votre propre client httpx2.Client ou httpx2.AsyncClient.
Tous les modèles de requêtes sont générés à partir de la spécification OpenAPI de la plateforme et validés localement avec Pydantic avant l’envoi de toute requête, de sorte qu’une valeur d’énumération invalide ou un nombre hors limites ne coûte jamais un aller-retour. Toutes les réponses sont des modèles Pydantic typés. Les erreurs héritent de DiscolikeError avec des sous-classes spécifiques pour l’authentification, l’accès au plan, l’introuvable, le serveur, la limite de débit, la validation et les échecs de connexion API. Les échecs transitoires sont réessayés automatiquement (3 tentatives par défaut).
Les opérations groupées de longue durée (match.bulk, segment, validate_icp, contacts.bulk_match) renvoient un identifiant de tâche (Job) au lieu de bloquer. Job.wait() bloque jusqu’à la fin, Job.status() interroge sans bloquer, et Job.cancel() annule. Pour les tâches de la famille DiscoGen, le JobStatus renvoyé contient des avertissements, estimated_cost et cost_metadata incluant l’utilisation par modèle et les entrées du fournisseur de recherche. JobTimeoutError est une limite d’attente côté client uniquement — la tâche continue de s’exécuter côté serveur, donc wait() peut être rappelé pour reprendre.
La CLI reflète les capacités du SDK avec des commandes pour discover, count, match, extract, validate-icp, append, segment, signup, ainsi que des groupes de commandes pour auth, company, contacts, discogen, queries, account, search-providers et llm-providers. Les résultats sont imprimés en JSON sur stdout par défaut, avec --format table pour une sortie lisible lorsque stdout est un TTY. Les points de terminaison asynchrones acceptent --wait pour bloquer jusqu’à la fin de la tâche, ou renvoient un task_id pour l’interrogation. Les codes de sortie sont standardisés : 0 succès, 1 erreur serveur, 2 erreur de validation, 3 erreur d’authentification/plan, 4 limite de débit, 5 erreur réseau, 6 introuvable.
Le dépôt est structuré comme un espace de travail uv avec deux membres : packages/discolike (le SDK) et packages/discolike-cli (la CLI). Le développement utilise pytest pour les tests, ruff pour le linting, et un script de génération de code (scripts/gen_requests.py) pour régénérer les modèles de requêtes à partir de la spécification OpenAPI. Le dossier examples/ contient des scripts exécutables pour des flux de travail courants : correspondance d’exports CRM de contacts avec les identifiants de persona DiscoLike avec point de contrôle et reprise, recherche groupée d’e-mails professionnels à partir d’un CSV, et découverte d’entreprises par ICP puis enrichissement avec DiscoGen. Le projet est sous licence MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.