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.1.tar.gz (72.7 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.1-py3-none-any.whl (41.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyis74-0.5.1.tar.gz
  • Upload date:
  • Size: 72.7 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.1.tar.gz
Algorithm Hash digest
SHA256 fc975354ff9300367ef4f83796b3eecc59cb03ed5af68e379701b78f428d2151
MD5 2efe5adb8296765335d59ee6eeec431b
BLAKE2b-256 902b2b7df6c29790d65d071b24ac372021faf212b4ef1cfee3fcdc6ed05bf90a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyis74-0.5.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: pyis74-0.5.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7406cac60660de1d0d55c9587cc8496773e0adbdb86cfea5c5c097ba41e36a3f
MD5 5ea5b1ada562f80d6f6798dd4fb48660
BLAKE2b-256 5cc7c896fc22d1d8805af8cdcb858cb5670bd85d9d96cc9345fab0e90bdced04

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyis74-0.5.1-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