Об этом проекте

discolike-python — это официальный Python SDK и CLI для DiscoLike API, поисковой системы по бизнес-веб-сайтам, которая индексирует более 80 миллионов бизнес-сайтов по всему миру на 50 языках. Репозиторий содержит два пакета: discolike (библиотека SDK) и discolike-cli (интерфейс командной строки, зависящий от SDK). Оба требуют Python 3.10+. SDK предоставляет типизированный клиент (Discolike) и его асинхронный аналог (AsyncDiscolike) для взаимодействия с API DiscoLike. Основные возможности включают поиск похожих компаний по ICP-тексту, фразам, технологическому стеку, географии и более чем 40 другим фильтрам; подсчёт сегментов перед их выгрузкой; сопоставление «грязных» названий компаний (с необязательными телефоном, городом, штатом) с доменами в одиночном или пакетном CSV-режиме; обогащение CSV-списков доменов данными DiscoLike; автоматическую сегментацию списков доменов; проверку списков доменов на соответствие ICP-определениям; получение полных профилей компаний с фирмографикой, скорингами, данными о росте, редиректами, вендорами и дочерними компаниями; поиск, просмотр, сопоставление и обнаружение контактов в целевых компаниях; а также запуск исследований DiscoGen по наборам доменов с включённым веб-поиском. Поддерживаются три способа аутентификации: регистрация (signup — создаёт аккаунт по email и имени без браузера, владелец подтверждает его по электронной почте), OAuth-вход (браузерный PKCE-код авторизации с loopback-редиректом или headless-режим с выводом URL) и API-ключ (через переменную окружения DISCOLIKE_API_KEY, конфигурационный файл CLI или явный параметр). OAuth-учётные данные обновляются заблаговременно за 60 секунд до истечения срока действия и ещё раз после получения 401. Клиент также поддерживает использование собственного httpx2.Client или httpx2.AsyncClient. Все модели запросов генерируются из OpenAPI-спецификации платформы и локально валидируются с помощью Pydantic перед отправкой любого запроса, поэтому неверные значения enum или числа вне допустимого диапазона никогда не приводят к лишнему обращению к API. Все ответы представляют собой типизированные Pydantic-модели. Ошибки наследуются от DiscolikeError и имеют специальные подклассы для ошибок аутентификации, доступа к тарифному плану, «не найдено», серверных ошибок, превышения лимита запросов, ошибок валидации и сбоев подключения к API. Временные сбои автоматически повторяются (по умолчанию 3 попытки). Долго выполняющиеся пакетные операции (match.bulk, segment, validate_icp, contacts.bulk_match) возвращают дескриптор Job вместо блокирования. Job.wait() блокирует выполнение до завершения, Job.status() опрашивает состояние без блокировки, а Job.cancel() прерывает операцию. Для заданий семейства DiscoGen возвращаемый JobStatus содержит предупреждения, estimated_cost и cost_metadata, включая использование по каждой модели и записи поисковых провайдеров. JobTimeoutError — это только клиентское ограничение времени ожидания: задача продолжает выполняться на стороне сервера, поэтому wait() можно вызвать снова для возобновления ожидания. CLI повторяет возможности SDK и предоставляет команды discover, count, match, extract, validate-icp, append, segment, signup, а также группы команд auth, company, contacts, discogen, queries, account, search-providers и llm-providers. Результаты по умолчанию выводятся в виде JSON в stdout, а с --format table — в удобочитаемом виде, если stdout является TTY. Асинхронные конечные точки принимают --wait для блокировки до завершения задания или возвращают task_id для опроса. Коды выхода стандартизированы: 0 — успех, 1 — серверная ошибка, 2 — ошибка валидации, 3 — ошибка аутентификации/тарифного плана, 4 — превышение лимита запросов, 5 — сетевая ошибка, 6 — не найдено. Репозиторий организован как uv-воркспейс с двумя компонентами: packages/discolike (SDK) и packages/discolike-cli (CLI). Для разработки используются pytest для тестирования, ruff для линтинга и скрипт генерации кода (scripts/gen_requests.py) для пересоздания моделей запросов из OpenAPI-спецификации. В папке examples/ находятся исполняемые скрипты для типовых задач, включая сопоставление экспортированных из CRM контактов с ID персон DiscoLike с поддержкой чекпоинтов и возобновления, массовый поиск рабочих email из CSV, а также поиск компаний по ICP с последующим обогащением через DiscoGen. Проект распространяется под лицензией MIT.