Skip to main content

Python wrapper for the Matterhorn RESTful APIs

Project description

pyhorn is a python client that wraps the Opencast Matterhorn video capture system. It provides a client interface, MHClient, that exposes methods for accessing both raw and ‘objectified’ response data from the various Matterhorn REST API endpoints.

This software should be considered Alpha, therefore likely to change/break in the near future.

Install

pip install pyhorn

Overview

Data available from the REST endpoints is accessible through methods of the MHClient object. In many cases the response data is encapsulated in additional classes to make accessing various attributes of the data possible using object notation. For instance, data about Matterhorn workflows can be accessed using the client.workflows() method. The return value will be a list of endpoints.workflow.Workflow objects. The operations attribute of those objects will get you a list of endpoints.workflow.WorkflowOperation objects. And so forth.

Currently there are only a handfull of endpoints wrapped in this way, and only a few convenience classes and methods defined for each one. The idea is to continue adding more as I (or you) need them. Patches welcome!

MHClient Method List

In the case of methods that accept a set of keyword arguments, the list of expected kwargs is mapped directly from the Matterhorn endpoint. In other words, if you want to know what kwargs to use for MHClient.workflows(), check the corresponding entry in the REST API docs at http://matterhorn.example.edu/docs.html?path=/workflow.

  • endpoints() - /info/components.json

  • me() - /info/me.json

  • workflows(**kwargs) - /workflow/instances.json

  • workflow(instance_id) - /workflow/instance/{id}.json

  • episodes(**kwargs)) - /episode/episode.json

  • episode(episode_id) - /episode/episode.json

  • user_actions(**kwargs) - /usertracking/actions.json

  • agents() - /capture-admin/agents.json

  • agent(agent_name) - /capture-admin/agents/{agent_name}.json

Example Usage

Create the client interface…

>>> from pyhorn import MHClient
>>> client = MHClient('http://matterhorn.example.edu', 'user', 'passwd')

Get a list of available endpoints…

>>> client.endpoints()
[{u'description': u'Capture Agent Admin REST Endpoint',
    u'docs': u'http://matterhorn.example.edu80/capture-admin/docs',
    u'path': u'/capture-admin',
    u'type': u'org.opencastproject.capture.admin',
    u'version': u'1.4.4',
    u'wadl': u'http://matterhorn.example.edu80/capture-admin/?_wadl&_type=xml'},
    {u'description': u'EpisodeService REST Endpoint',
    u'docs': u'http://matterhorn.example.edu80/episode/docs',
    u'path': u'/episode',
    u'type': u'org.opencastproject.episode',
    u'version': u'1.4.4',
    u'wadl': u'http://matterhorn.example.edu80/episode/?_wadl&_type=xml'},
...

Get list of current workflow instances…

>>> wfs = client.workflows()
>>> for wf in wfs:
        print wf.id + ": " + wf.state
1646: STOPPED
1649: STOPPED
1651: STOPPED
1655: STOPPED
4211: SUCCEEDED
14479: SUCCEEDED
14486: SUCCEEDED
441: STOPPED
445: STOPPED
...

… or just the successful ones…

>>> wfs = client.workflows(state="SUCCEEDED")

… or the operations for a particular instance…

>>> wf = client.workflow(instance_id=1646)
>>> ops = wf.operations
>>> for op in ops:
    print op.id + ": " + op.state
apply-acl: SUCCEEDED
tag: SUCCEEDED
tag: SUCCEEDED
inspect: SUCCEEDED
prepare-av: SUCCEEDED
prepare-av: SUCCEEDED
compose: SUCCEEDED
compose: SUCCEEDED
...

Get the list of currently configured capture agents

>>> cas = client.agents()
>>> for ca in cas:
    print ca.name + ": " + ca.state
epiphan001: unknown
epiphan002: unknown
ewave001: idle
ewave002: idle
ncast001: idle
ncast002: shutting_down

Release History

0.1.0 (2014-10-23)

  • Birth!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pyhorn-0.1.0-py2-none-any.whl (11.1 kB view details)

Uploaded Python 2

File details

Details for the file pyhorn-0.1.0-py2-none-any.whl.

File metadata

File hashes

Hashes for pyhorn-0.1.0-py2-none-any.whl
Algorithm Hash digest
SHA256 0ae888ef98bb6efccc376d3f330c8115dfb9ce31a4fb1f718645a390b8dd4580
MD5 9aeb8d9f52f24238f53dced57250c325
BLAKE2b-256 ddd5d565f175e13c4c62ff7fd743c57c16fb38bd9dcd8fa33e75ba47066fbb19

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