Skip to main content

Python client for the ProPresenter REST API

Project description

propresenter-client

CI PyPI

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

  • ProPresenterController class 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 slide
  • b — Back to previous slide
  • q — Quit
  • 1, 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:

  1. Create the project's pending publisher at https://pypi.org/manage/account/publishing/.
  2. Owner: scaperothian, repository: propresenter-client, workflow: publish.yml, environment: pypi.

Requirements

  • Python 3.10+
  • requests

License

MIT

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

propresenter_client-0.1.0.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

propresenter_client-0.1.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

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

Hashes for propresenter_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 77ed62ffb4966c90fa70eeefe13258621771dc0d14778c7afc0a7a685c09940a
MD5 aa491d92351536506faafb6dc68b0f05
BLAKE2b-256 b4133e3e6d935bed9b1db5ec88209230ded9d54a2e5ed8593abf4067b4e56480

See more details on using hashes here.

Provenance

The following attestation bundles were made for propresenter_client-0.1.0.tar.gz:

Publisher: publish.yml on scaperothian/propresenter-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file propresenter_client-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for propresenter_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 682e3c42c5ef6decb3657f490102c0b2406c1d96b90b7b48c39fe97d8e67800d
MD5 d91b6b510657cf2a085ea5f21eb0e593
BLAKE2b-256 af2a9a22af274c1f94a4b7e44f1890f91933f1eac305d660677e84fbf47fcdab

See more details on using hashes here.

Provenance

The following attestation bundles were made for propresenter_client-0.1.0-py3-none-any.whl:

Publisher: publish.yml on scaperothian/propresenter-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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