Skip to main content

python client for epiphan-pearl http api

Project description


Python client for [epiphan-pearl][pearl]. It provides a client interface for
epiphan-pearl [http api][pearl-http-api], and some of its web ui configuration
interface, and DCE custom web ui configuration as well.

Current version of Epipearl is tested against _v3.15.3f_ firmware.

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


pip install epipearl

example usage to get and set channels parameters

from epipearl import Epipearl
client = Epipearl( "http://epiphan_pearl_address", "admin", "secret_password" )

# to get the type of stream being published and frame size for channel 1
response = client.get_params( channel='1', params={'publish_type':'', 'framesize':''})
print "publish_type is %s" % response['publish_type']
print "framsize is %s" % response['framesize']

# to start recording on recorder 2
response = client.set_params( channel='m2', params={'rec_enabled': 'on'})
if response:
print "recorder 2 set to start recording"

example usage of web ui methods

Besides the HTTP API calls `get_params()` and `set_params()`, epipearl exposes
some web ui HTML form posts as python calls.

For example, if you need to create a new channel:

# create the client
import requests
from epipearl.errors import SettingConfigError
from epipearl.errors IndiscernibleResponseFromWebUiError
from epipearl import Epipearl
client = Epipearl( "http://epiphan_pearl_address", "admin", "secret_password" )

# to create a channel, give it a name
channel_id = client.create_channel('my new epiphan-pearl channel')

# the returned channel_id is the id to be used to reference this channel
# in all subsequent operations, like setting the rtmp-push settings
except requests.HTTPError:
print 'error during http request'
except SettingConfigError as e:
print 'device web ui returned error or some settings did not take'
print e.message
except IndiscernibleResponseFromWebUiError:
print 'did not understand response from device web ui'
print e.message
print 'channel({}) rtmp settings done'.format(channel_id)'

For examples on all implemented web ui calls, please check the unit tests in
the tests dir of a local clone. Tests also host examples of json files for
layout inputs and expected json responses from device.


During development, epipearl tests were executed using [pytest][pytest].

To run test from a local git clone:

pip install -r requirements_dev.txt

then, to rul all tests:

py.test tests

You can also run live tests, but these require some environment variables to be

- EPI\_URL: the url to reach the epiphan-pearl web ui
- EPI\_USER: the admin username for epiphan-pearl web ui
- EPI\_PASSWD: the admin password for epiphan-pearl web ui
- EPI\_PUBLISH\_TYPE: 0 or 6 to stop or start rtmp push in epiphan-pearl

Set these in the environment and do

export EPI_URL=http://epiphan_pearl_address
export EPI_USER=admin_user
export EPI_PASSWD=secret_password
export EPI_PUBLISH_TYPE=0 # stop rtmp pushing
py.test tests --runlive

Live tests will connect with actual device and change its settings.


epipearl is licensed under the Apache 2.0 license


2015~2016 President and Fellows of Harvard College



0.2.0 (2016-07-11)

* webui calls for configuration

0.1.1 (2016-03-17)

* fix value for dynamic default args

0.1.0 (2015-12-10)

* First release on PyPI.

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

epipearl-0.2.0.tar.gz (360.6 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page