Skip to main content

Типизированная Python-библиотека для работы с API IS74/Интерсвязь.

Project description

pyis74

pyis74 - Python-библиотека для работы с API IS74/Интерсвязь.

Проект находится на раннем этапе разработки. Цель библиотеки - предоставить современный, типизированный и проверяемый клиент для сценариев:

  • авторизация в API IS74;
  • работа с домофонами;
  • открытие двери;
  • получение камер и ссылок на видеопотоки;
  • получение данных личного кабинета;
  • история событий.

Требования

  • Python 3.14+.
  • Runtime-зависимости минимальны.
  • Публичный API будет типизирован.

Пример

import asyncio

from pyis74 import IS74Async


async def main() -> None:
    async with IS74Async(base_domain="is74.ru") as client:
        await client.auth.login_with_password("login", "password")
        summary = await client.account.get_summary()
        print(summary.user.full_name)
        print(summary.balance.balance)


asyncio.run(main())

Синхронный клиент хранит полученный mobile token внутри экземпляра:

from pyis74 import IS74


client = IS74()
client.auth.login_with_password("login", "password")
balance = client.account.get_balance()
print(balance.balance)

Больше сценариев есть в каталоге examples: авторизация через логин/пароль, phone auth, проверка адреса, проверка баланса, история событий и camera API.

Документация публичных методов находится в docs/public-api.md: там описаны входные параметры, возвращаемые модели и безопасные примеры данных. История изменений ведется в CHANGELOG.md.

Домофонные примеры разделены на два пути:

  • examples/open_domofon_relay.py - основной путь через LINKS.open из списка реле;
  • examples/open_domofon_relay_api.py - диагностический прямой вызов /domofon/relays/{relay_id}/open.

Подробное описание различий есть в examples/README.md.

История событий доступна через client.history.get_events(...). Метод использует CRM/LK API и при необходимости получает LK token через текущий mobile token. Для частого сценария последних открытий и звонков есть client.history.get_recent_activity(...). Для добора нескольких страниц до нужного количества событий есть client.history.get_events_until_limit(...).

Camera API доступен через client.cameras:

  • get_self_cams_with_group();
  • get_groups(self_cams=False);
  • get_group(group_id);
  • get_limited_info_by_uuid(uuid);
  • get_limited_info_by_uuids(uuids).

У каждой Camera есть свойство streams, которое собирает HLS, MSE, snapshot и WebSocket URL в одну модель CameraStreams. Подписанные stream/snapshot URL считаются временными credential-like значениями: не сохраняйте их в публичных логах, документации и fixtures.

По умолчанию клиент использует домен is74.ru. Если совместимый API расположен на другом домене, передайте base_domain в IS74Async или IS74; high-level методы и ClientRequestOptions(base_url=BaseUrl.*) будут строить URL от этого домена.

Диагностические примеры examples/inspect_cameras.py и examples/inspect_user_device.py по умолчанию печатают безопасную сводку без адресов, UUID, MAC-адресов и подписанных URL. Сырой JSON включается только явным IS74_RAW_JSON=yes.

Благодарности

Спасибо авторам открытых проектов, по которым мы сверяли известные endpoint и поведение API:

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

Разработка

uv sync --all-groups
uv run ruff format
uv run ruff check
uv run mypy
uv run pytest
uv run python scripts/privacy_scan.py
uv build

Статус API

До версии 1.0.0 публичный API может изменяться. Breaking changes будут отражаться в minor-релизах серии 0.x.

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

pyis74-0.5.0.tar.gz (72.6 kB view details)

Uploaded Source

Built Distribution

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

pyis74-0.5.0-py3-none-any.whl (41.4 kB view details)

Uploaded Python 3

File details

Details for the file pyis74-0.5.0.tar.gz.

File metadata

  • Download URL: pyis74-0.5.0.tar.gz
  • Upload date:
  • Size: 72.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyis74-0.5.0.tar.gz
Algorithm Hash digest
SHA256 cac7bf9bf781093fbf020bc8c49c6d58a4a4b6afbca2fa2067e6d0825e363451
MD5 2400ffaef4719c748943aa5746c44816
BLAKE2b-256 e1743cfd3c015323489fe66f999748d0027194019a8b85ddd6a2a1dadc61228e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyis74-0.5.0.tar.gz:

Publisher: release.yml on catemohi/pyis74

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyis74-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: pyis74-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 41.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyis74-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9cf328faf9f8319f1cce379d4e970b988345074070780d2ab9eb2fadb06eb93d
MD5 b0932da4a4f549688e317bca3a9a5305
BLAKE2b-256 5b23b01acae19c1c78ba90b8dde64565d66b0b6c84b216121b3f0470f4f1e5e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyis74-0.5.0-py3-none-any.whl:

Publisher: release.yml on catemohi/pyis74

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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