Skip to main content

Python library for working with amoCRM API with ETL capabilities

Project description

amochka

Официальная документация API amocrm - https://www.amocrm.ru/developers/content/crm_platform/api-reference

amochka — библиотека для работы с API amoCRM на Python. Она поддерживает:

  • Получение данных сделок с вложенными сущностями (контакты, компании, теги, и т.д.)
  • Редактирование сделок, включая обновление стандартных и кастомных полей
  • Поддержку нескольких amoCRM-аккаунтов с персистентным кэшированием кастомных полей для каждого аккаунта отдельно
  • Ограничение запросов (7 запросов в секунду) с использованием декораторов из библиотеки ratelimit

Основные функции

  • get_deal_by_id(deal_id) — получение детальной информации по сделке
  • get_pipelines() — список воронок и статусов
  • fetch_updated_leads_raw(pipeline_id, updated_from, ...) — выгрузка необработанных сделок за период

Требования к окружению

Python 3.8 или новее. Потребуются пакеты requests и ratelimit.

Установка

Установите зависимости командой:

pip install requests ratelimit

Затем скопируйте репозиторий или установите пакет из PyPI (после публикации):

pip install amochka

Кэширование кастомных полей

Для уменьшения количества запросов к API кастомные поля кэшируются персистентно. Если параметр cache_file не указан, имя файла кэша генерируется автоматически на основе домена amoCRM-аккаунта. Вы можете обновлять кэш принудительно, передавая параметр force_update=True в метод get_custom_fields_mapping() или настроить время жизни кэша (по умолчанию — 24 часа).

Выгрузка обновленных сделок

Метод fetch_updated_leads_raw() позволяет получить все сделки из указанной воронки, которые были изменены в заданный промежуток времени. Результат можно сохранить в JSON-файл без какой‑либо обработки:

from datetime import datetime, timedelta
from amochka import AmoCRMClient, CacheConfig

client = AmoCRMClient(
    base_url="https://bneginskogo.amocrm.ru",
    token_file="/path/to/token.json",
    cache_config=CacheConfig.disabled(),
    disable_logging=True
)

three_hours_ago = datetime.utcnow() - timedelta(hours=3)
client.fetch_updated_leads_raw(6241334, updated_from=three_hours_ago, save_to_file="leads.json")

Пример получаемого JSON (укороченный):

[
  {
    "id": 26282337,
    "name": "Автосделка: Заявка от (Максим Брокер Дубай Бюро Негинского)",
    "custom_fields_values": [
      {
        "field_name": "roistat",
        "values": [{"value": "2026"}]
      }
    ],
    "_embedded": {
      "tags": [
        {"id": 179813, "name": "WZ (Федор 971568113315)"}
      ]
    }
  }
]

Для подключения к реальному аккаунту сохраните JSON с OAuth‑токеном и укажите его путь в параметре token_file при создании клиента. Базовый URL можно взять из переменной окружения AMO_BASE_URL.

Тесты

Файл tests/test_client.py содержит небольшой набор автоматических тестов, написанных на pytest. Они запускают методы клиента на подставном классе DummyClient и проверяют, что функции работают так, как ожидается. Запустить тесты можно командой:

pytest -q

Эти тесты помогают убедиться, что изменения в коде не ломают основную функциональность.

Пример использования fetch_updated_leads_raw

Кроме примера в разделе выше, код из example_fetch.py демонстрирует полный процесс получения сделок и сохранения их в файл.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

amochka-0.3.0.tar.gz (45.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

amochka-0.3.0-py3-none-any.whl (45.7 kB view details)

Uploaded Python 3

File details

Details for the file amochka-0.3.0.tar.gz.

File metadata

  • Download URL: amochka-0.3.0.tar.gz
  • Upload date:
  • Size: 45.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for amochka-0.3.0.tar.gz
Algorithm Hash digest
SHA256 b51a8bcfcd2c046d93f899aac04f01047fe1a1b7e0cba585bb870bc71921d2ce
MD5 92104616d465ba65f7889a067f0e36cd
BLAKE2b-256 de9a4fd1420e028ba49a3419d085663cb5a8829d8e5d6c142ef360b9b55475e5

See more details on using hashes here.

File details

Details for the file amochka-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: amochka-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 45.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for amochka-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8a380cd3c31ab704f10638f5669fe787bef0f0ad37d8edb4ad04be209958728a
MD5 f42d979c0cdce3c206396db2ea68c72c
BLAKE2b-256 9f07c2c55a5e0fc00834ddc78fe5f79c784a462b9ad9b85d48592a53ee88cc46

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page