Skip to main content

A Python client for controlling Shinobi (an open-source video management solution)

Project description

Build Status Code Coverage PyPi

Shinobi Python Client

A Python client for controlling Shinobi (an open-source video management solution).

About

This package contains an (very incomplete) set of tools for interacting with Shinobi using Python.

This library tries to use the (rather unique) documented API but it also uses undocumented endpoints (which may not be stable).

Installation

Install from PyPi:

pip install shinobi-client

Install with ability to start a Shinobi installation:

pip install shinobi-client[shinobi-controller]

Install with CLI:

pip install shinobi-client[cli]

Usage

Warning: methods are generally not thread safe.

Python

Start with creating the client for a particular Shinobi installation:

from shinobi_client import ShinobiClient

shinobi_client = ShinobiClient(host, port, super_user_token=super_user_token)

(super_user_token is optional and only required for some operations.)

User

user = shinobi_client.user.get(email)
# Get user details using the user's password (does not require super user token)
user = shinobi_client.user.create(email, password)

users = shinobi_client.user.get_all()

user = shinobi_client.user.create(email, password)

modified = shinobi_client.user.modify(email, password=new_password)

deleted = shinobi_client.user.delete(email)

API Key

api_key = shinobi_client.api_key.get(email, password)

Monitor (Camera Setup)

# Setting monitors (camera setups) for the user with the given email address
monitor_orm = shinobi_client.monitor(email, password)

monitors = monitor_orm.get_all()

monitor = monitor_orm.get(monitor_id)

monitor = monitor_orm.create(monitor_id, configuration)

modified = monitor_orm.modify(monitor_id, configuration)

deleted =  monitor_orm.delete(monitor_id)

Shinobi Controller

Starts/Stops a temporary containerised installation of Shinboi. Written for the purpose of testing but it is also installable as an extra. Requires Docker.

from shinobi_client import start_shinobi

with start_shinobi() as shinobi_client:
    print(shinobi_client.url)
    # Do things with a temporary Shinobi installation

or

from shinobi_client import ShinobiController

controller = ShinobiController()
shinobi_client = controller.start()
print(shinobi_client.url)
# Do things with a temporary Shinobi installation
controller.stop()

CLI

A basic auto-generated CLI is available if the package is installed with the cli extra:

PYTHONPATH=. python shinobi_client/user.py \
        --host=HOST --port=PORT --super_user_token=SUPER_USER_TOKEN \
    get user@example.com

e.g.

$ PYTHONPATH=. python shinobi_client/cli.py \
        --host='0.0.0.0' --port=50694 --super_user_token='26dd3352-73c4-4bbd-8b09-17f2aacbd7b9' \
    create 'user@example.com' 'password123'

Development

Install with dev-dependencies:

poetry install --no-root --extras "shinobi-controller cli"

Run tests with:

python -m unittest discover -v -s shinobi/tests

Legal

GPL v3.0. Copyright 2020 Colin Nolan.

I am not affiliated to the development of Shinobi project in any way. This work is in no way related to the company that I work for.

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

shinobi-client-3.0.0.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

shinobi_client-3.0.0-py3-none-any.whl (33.9 kB view details)

Uploaded Python 3

File details

Details for the file shinobi-client-3.0.0.tar.gz.

File metadata

  • Download URL: shinobi-client-3.0.0.tar.gz
  • Upload date:
  • Size: 28.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.7.3 Darwin/19.4.0

File hashes

Hashes for shinobi-client-3.0.0.tar.gz
Algorithm Hash digest
SHA256 7a5f3f573b2c7c42d952b5d8fe4d5d966f4c86eeb9d75a77aaa39a9095feb2f4
MD5 1eb3d815c801781ed089d185b9ceb1dc
BLAKE2b-256 10fc33b35a0b5d10dee6bc6e5d79e857b558642ac41b6d97be7e847732d497f4

See more details on using hashes here.

File details

Details for the file shinobi_client-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: shinobi_client-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 33.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.7.3 Darwin/19.4.0

File hashes

Hashes for shinobi_client-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4c4e00b2722d413baaf91bf14319f9e7a2eadb43cf94263e63517e5679251315
MD5 5685a647ca58608cc5b3e7cc905c45f0
BLAKE2b-256 3e430806f3ccf048df89484caadc664615ec2e0aa96b8af603b1ec594b91d46f

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