Типизированная 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:
- @hoolea и проект
intersvyaz_hass; - @alexmorbo и проект
domru.
Эти проекты помогли быстрее проверить гипотезы по авторизации, аккаунту и домофонным
сценариям. 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc975354ff9300367ef4f83796b3eecc59cb03ed5af68e379701b78f428d2151
|
|
| MD5 |
2efe5adb8296765335d59ee6eeec431b
|
|
| BLAKE2b-256 |
902b2b7df6c29790d65d071b24ac372021faf212b4ef1cfee3fcdc6ed05bf90a
|
Provenance
The following attestation bundles were made for pyis74-0.5.1.tar.gz:
Publisher:
release.yml on catemohi/pyis74
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyis74-0.5.1.tar.gz -
Subject digest:
fc975354ff9300367ef4f83796b3eecc59cb03ed5af68e379701b78f428d2151 - Sigstore transparency entry: 1874242564
- Sigstore integration time:
-
Permalink:
catemohi/pyis74@dc19c3eb9d1f212095946bf4f93d96d000b8f91a -
Branch / Tag:
refs/tags/v0.5.1 - Owner: https://github.com/catemohi
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dc19c3eb9d1f212095946bf4f93d96d000b8f91a -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7406cac60660de1d0d55c9587cc8496773e0adbdb86cfea5c5c097ba41e36a3f
|
|
| MD5 |
5ea5b1ada562f80d6f6798dd4fb48660
|
|
| BLAKE2b-256 |
5cc7c896fc22d1d8805af8cdcb858cb5670bd85d9d96cc9345fab0e90bdced04
|
Provenance
The following attestation bundles were made for pyis74-0.5.1-py3-none-any.whl:
Publisher:
release.yml on catemohi/pyis74
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyis74-0.5.1-py3-none-any.whl -
Subject digest:
7406cac60660de1d0d55c9587cc8496773e0adbdb86cfea5c5c097ba41e36a3f - Sigstore transparency entry: 1874242687
- Sigstore integration time:
-
Permalink:
catemohi/pyis74@dc19c3eb9d1f212095946bf4f93d96d000b8f91a -
Branch / Tag:
refs/tags/v0.5.1 - Owner: https://github.com/catemohi
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dc19c3eb9d1f212095946bf4f93d96d000b8f91a -
Trigger Event:
push
-
Statement type: