Python client for the ProPresenter REST API
Project description
propresenter-client
Python client for the ProPresenter REST API.
Description
A Python library and CLI for interacting with ProPresenter's REST API. Provides a ProPresenterController class for programmatic access to any ProPresenter API endpoint, plus an interactive presentation mode CLI for live slide control.
Features
ProPresenterControllerclass covering common ProPresenter API endpoints- Interactive presentation mode for live slide navigation
- Extensible design — add new API endpoints as methods over time
Installation
pip install propresenter-client
Development Setup
# Create a virtual environment and install the package with dev dependencies
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# Run the CLI
propresenter-client --host=<your-host>
Quick Start
from propresenter_client import ProPresenterController
controller = ProPresenterController(host="localhost", port=1025)
# Slide control
controller.next_slide()
controller.previous_slide()
controller.go_to_slide(1) # 1-indexed
# Presentations
controller.activate_presentation("92B5E6E2-5E99-4F54-BAD3-6FBD7D2EE675")
controller.get_presentation_details("92B5E6E2-5E99-4F54-BAD3-6FBD7D2EE675")
controller.activate_first_library_presentation("Default")
Interactive Presentation Mode
# Default: activates first presentation in Default library
propresenter-client --host=192.168.1.100
# Activate a specific presentation by name before entering interactive mode
propresenter-client --host=192.168.1.100 --presentation="Amazing Grace"
# Print presentation details and exit (no interactive mode)
propresenter-client --host=192.168.1.100 --presentation="Amazing Grace" --list-details
# Use a different library
propresenter-client --host=192.168.1.100 --library="Worship"
# Enable request diagnostics
propresenter-client --host=192.168.1.100 --log-level=DEBUG
Interactive commands (no Enter required for single-key commands):
n— Next slideb— Back to previous slideq— Quit1,2,3, … — Go to specific slide (1-indexed, press Enter to confirm)Escape— Cancel a partially typed slide number
Testing
# Run all tests
pytest
# Run specific test file
pytest tests/test_propresenter_controller.py -v
# Run specific test class
pytest tests/test_propresenter_controller.py::TestProPresenterController -v
# Run individual test
pytest tests/test_propresenter_controller.py::TestProPresenterController::test_get_status_success -v
# Run tests matching a pattern
pytest -k "test_get" -v
# Generate coverage report
pytest --cov=propresenter_client
Releasing
Releases are published to PyPI
automatically by the Publish GitHub Actions workflow when a version tag is
pushed. The version number is derived from the git tag via setuptools_scm.
git tag v1.2.3
git push origin v1.2.3
Publishing uses PyPI Trusted Publishing (OIDC), so no API tokens are stored in the repository. One-time setup on PyPI:
- Create the project's pending publisher at https://pypi.org/manage/account/publishing/.
- Owner:
scaperothian, repository:propresenter-client, workflow:publish.yml, environment:pypi.
Requirements
- Python 3.10+
- requests
License
MIT
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 propresenter_client-0.1.0.tar.gz.
File metadata
- Download URL: propresenter_client-0.1.0.tar.gz
- Upload date:
- Size: 16.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77ed62ffb4966c90fa70eeefe13258621771dc0d14778c7afc0a7a685c09940a
|
|
| MD5 |
aa491d92351536506faafb6dc68b0f05
|
|
| BLAKE2b-256 |
b4133e3e6d935bed9b1db5ec88209230ded9d54a2e5ed8593abf4067b4e56480
|
Provenance
The following attestation bundles were made for propresenter_client-0.1.0.tar.gz:
Publisher:
publish.yml on scaperothian/propresenter-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propresenter_client-0.1.0.tar.gz -
Subject digest:
77ed62ffb4966c90fa70eeefe13258621771dc0d14778c7afc0a7a685c09940a - Sigstore transparency entry: 2043541455
- Sigstore integration time:
-
Permalink:
scaperothian/propresenter-client@6200d60c1839eaf95b920484fd7af3525af84bd3 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/scaperothian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6200d60c1839eaf95b920484fd7af3525af84bd3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file propresenter_client-0.1.0-py3-none-any.whl.
File metadata
- Download URL: propresenter_client-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.1 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 |
682e3c42c5ef6decb3657f490102c0b2406c1d96b90b7b48c39fe97d8e67800d
|
|
| MD5 |
d91b6b510657cf2a085ea5f21eb0e593
|
|
| BLAKE2b-256 |
af2a9a22af274c1f94a4b7e44f1890f91933f1eac305d660677e84fbf47fcdab
|
Provenance
The following attestation bundles were made for propresenter_client-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on scaperothian/propresenter-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
propresenter_client-0.1.0-py3-none-any.whl -
Subject digest:
682e3c42c5ef6decb3657f490102c0b2406c1d96b90b7b48c39fe97d8e67800d - Sigstore transparency entry: 2043541511
- Sigstore integration time:
-
Permalink:
scaperothian/propresenter-client@6200d60c1839eaf95b920484fd7af3525af84bd3 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/scaperothian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6200d60c1839eaf95b920484fd7af3525af84bd3 -
Trigger Event:
push
-
Statement type: