Skip to main content

Python Wrapper for Intelbras API

Project description

PyIntelbras

PyPI Python Versions PyPI Package Version GitHub Issues GitHub commit activity (branch) GitHub License

PyIntelbras é um módulo Python para trabalhar com a API Intelbras V3.35.

Obs: Caso o link da documentação esteja offline, a mesma também está disponível no diretório docs do repositório.

Requisitos

  • Testado com a API V3.35 de um iNVD 9116 PE FT.

Iniciando

Instale PyIntelbras usando pip:

$ pip install pyintelbras

Agora é possível importar e usar o PyIntelbras da seguinte forma:

from pyintelbras import IntelbrasAPI

api = IntelbrasAPI("http://device-server.example.com")
api.login("api-user", "api-pass")

response = api.configManager(action='getConfig', name='ChannelTitle')

Documentação

O PyIntelbras utiliza a biblioteca requests para HTTP. Todos os paths existentes na API da Intelbras podem ser utilizados como métodos e seus respectivos parâmetros também podem ser passados como parâmetros das funções.

from pyintelbras import IntelbrasAPI

api = IntelbrasAPI("http://device-server.example.com")
api.login("api-user", "api-pass")

response = api.configManager(action='getConfig', name='ChannelTitle')

O exemplo acima irá realizar uma requisição GET para o endereço:

http://device-server.example.com/cgi-bin/configManager.cgi?action=getConfig&name=ChannelTitle.

Note que tanto o prefixo cgi-bin quanto o sufixo .cgi, exigidos pela API, são automaticamente adicionados.

Tipo de Requisição

É possível definir o tipo de requisição, sendo permitidos apenas 2 verbos HTTP.

Por padrão e caso seja omitido, a requisição será do tipo GET.

GET

from pyintelbras import IntelbrasAPI

api = IntelbrasAPI("http://device-server.example.com")
api.login("api-user", "api-pass")

# Mesmo efeito para ambas as requisições
response = api.configManager(action='getConfig', name='ChannelTitle')
response = api.configManager.get(action='getConfig', name='ChannelTitle')

POST

from pyintelbras import IntelbrasAPI

api = IntelbrasAPI("http://device-server.example.com")
api.login("api-user", "api-pass")

response = api.api.LogicDeviceManager.getCameraState.post(body={ 'uniqueChannels': [-1] })

O exemplo acima irá realizar uma requisição POST para o endereço:

http://device-server.example.com/cgi-bin/api/LogicDeviceManager/getCameraState.cgi.

E enviar o conteúdo da variável body como corpo da requisição.

Diferenciação entre Maiúsculas e Minúsculas

A API da Intelbrás é case sensitive, ou seja, faz diferenciação entre maiúsculas e minúsculas. Por conta disto, a URL de requisição é montada exatamente conforme os métodos e parâmetros são passados.

Sendo assim, a requisição abaixo deverá retornar o código de status HTTP 200:

api.configManager(action='getConfig', name='ChannelTitle')

Enquanto isso, a requisição abaixo retornará o código de status HTTP 400:

api.configmanager(action='getConfig', name='ChannelTitle')

Note a diferença da grafia da letra M. Isso irá ocorrer pelo fato de não existir a rota:

.../cgi-bin/configmanager.cgi/...

e sim:

.../cgi-bin/configManager.cgi/....

Uso de Parâmetros

Os componente de consulta (query parameters), utilizados como parâmetros das funções, devem ser tratados adequadamente quando possuírem sintaxe inválida no python. Basicamente isso será necessário quando houver . ou [] nos parâmetros. O seguinte exemplo:

...
response = api.mediaFileFind(action='findFile', condition.Channel=1)

Retornará o erro:

  Cell In[1], line 1
    response = api.mediaFileFind(action='findFile', condition.Channel=1)
                                                    ^
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

A forma correta de lidar neste caso é utilizando a descompactação de listas de argumentos.

...
params = {
    'action': 'findFile',
    'condition.Channel': 1
}

response = api.mediaFileFind(**params)

Habilitando Logs

Se for necessário debugar algum problema com as requisições para a API da Intelbras, é possível habilitar a saída de logs. O pyintelbras utiliza o sistema de logging do Python, mas por padrão, ele registra para Null. É possível alterar esse comportamento. Segue um exemplo:

import sys
import logging
from pyintelbras import IntelbrasAPI

stream = logging.StreamHandler(sys.stdout)
stream.setLevel(logging.DEBUG)
log = logging.getLogger('pyintelbras')
log.addHandler(stream)
log.setLevel(logging.DEBUG)

api = IntelbrasAPI("http://device-server.example.com")
api.login("api-user", "api-pass")

response = api.configManager(action='getConfig', name='ChannelTitle')

Exemplos

Outros exemplos de uso da API estão disponíveis no diretório examples do repositório.

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

pyintelbras-0.0.23.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

pyintelbras-0.0.23-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file pyintelbras-0.0.23.tar.gz.

File metadata

  • Download URL: pyintelbras-0.0.23.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pyintelbras-0.0.23.tar.gz
Algorithm Hash digest
SHA256 e24764df1f8c70e8fcfe7cc70e5de314a9f0eee102aceaf7550adeec30f72c51
MD5 83966a0d9ecb5ee60c2e43ab4c46ef00
BLAKE2b-256 5b4be20ce98a2a67e04d8527edcb4f2c273c4bf16704d7a42c5d85847953c5df

See more details on using hashes here.

File details

Details for the file pyintelbras-0.0.23-py3-none-any.whl.

File metadata

File hashes

Hashes for pyintelbras-0.0.23-py3-none-any.whl
Algorithm Hash digest
SHA256 8734fdb8405a3f243ead20c11a7eae2176b578d7b326087b19ad372e41ceb83c
MD5 637b469e5013dd2c8d0933de6c0b4e12
BLAKE2b-256 3bf39641afd2b1572f517af75dbaecfe7b67d9688883277f7ad17022cca3f680

See more details on using hashes here.

Supported by

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