stegawave


Namestegawave JSON
Version 0.1.10 PyPI version JSON
download
home_pageNone
SummaryPython client for the Stegawave media pipeline API
upload_time2025-10-22 20:41:46
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords aws media stegawave streaming video
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Stegawave Python Client

`stegawave` is an unofficial Python SDK for the Stegawave forensic watermarking platform. It wraps the public REST API and helps you validate `/create` payloads, manage pipeline lifecycle, and trigger watermark decode jobs without hand-writing HTTP calls.

## Installation

```bash
pip install stegawave
```

## Quick start

```python
from stegawave import StegawaveClient, models

client = StegawaveClient(api_key="your-api-key")

create_request = models.CreatePipelineRequest(
    name="launch-stream",
    description="Product launch livestream",
    segmentDuration=4,
    input=models.InputConfig(  # RTMP push by default
        Type="RTMP_PUSH",
        whitelist=["0.0.0.0/0"],
    ),
    encoder=models.EncoderConfig(
        vodArchive=False,
        output_group=models.OutputGroup(
            Name="cmaf-main",
            Outputs=[
                models.OutputConfig(
                    OutputName="cmaf-1080p",
                    resolution="1920x1080",
                    FramerateNumerator=30,
                    FramerateDenominator=1,
                    VideoBitrate=7_500_000,
                    AudioBitrate=128_000,
                )
            ],
        ),
    ),
    packager=models.PackagerConfig(
        originEndpoints=[
            models.OriginEndpoint(
                name="cmaf-hybrid",
                ContainerType="CMAF",
                HlsManifests=[models.HlsManifest(ManifestName="index")],
            )
        ]
    ),
)

session = client.create_pipeline_session(create_request, wait=True)
print(session.event_id)

print("Input:", session.input_uri)
print("Manifests:")
for url in session.signed_manifest_uris("john_doe"):
    print("  ", url)
```

The SDK automatically injects your API key, validates payload structure using Pydantic models, and surfaces HTTP issues as rich exceptions.

## Configuration

Set your base URL or API key explicitly, or rely on environment variables.

```python
client = StegawaveClient()
```

| Environment variable      | Description                            |
|---------------------------|----------------------------------------|
| `STEGAWAVE_API_KEY`       | API key provided by Stegawave          |
| `STEGAWAVE_API_BASE_URL`  | Override the default `https://api.stegawave.com` |

## Features

- Strongly-typed request and response models for `/create`, `/get`, `/state`, `/delete`, `/token`, `/decode`, `/iptv`, `/passphrase`
- High-level `PipelineSession` workflow helper to provision, poll, and sign manifests in a few lines
- Convenience helpers for SRT listener inputs, ABR ladders, and asynchronous provisioning workflows
- Configurable retries, timeouts, and polling intervals
- First-class error types for authentication, validation, rate limiting, and server-side failures

## Status

This client is pre-release software targeting the October 2025 API schema. Expect breaking changes as the platform evolves. Contributions and issue reports are welcome.

## Development

```bash
pip install -e .[dev]
pytest
```

Refer to `CHANGELOG.md` for planned enhancements and release history.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "stegawave",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "aws, media, stegawave, streaming, video",
    "author": null,
    "author_email": "Stegawave <support@stegawave.com>",
    "download_url": "https://files.pythonhosted.org/packages/65/90/1ba2e0b6adbb821a1535ef82f43f6dbd401d6b35f9c81725dce96a31d577/stegawave-0.1.10.tar.gz",
    "platform": null,
    "description": "# Stegawave Python Client\n\n`stegawave` is an unofficial Python SDK for the Stegawave forensic watermarking platform. It wraps the public REST API and helps you validate `/create` payloads, manage pipeline lifecycle, and trigger watermark decode jobs without hand-writing HTTP calls.\n\n## Installation\n\n```bash\npip install stegawave\n```\n\n## Quick start\n\n```python\nfrom stegawave import StegawaveClient, models\n\nclient = StegawaveClient(api_key=\"your-api-key\")\n\ncreate_request = models.CreatePipelineRequest(\n    name=\"launch-stream\",\n    description=\"Product launch livestream\",\n    segmentDuration=4,\n    input=models.InputConfig(  # RTMP push by default\n        Type=\"RTMP_PUSH\",\n        whitelist=[\"0.0.0.0/0\"],\n    ),\n    encoder=models.EncoderConfig(\n        vodArchive=False,\n        output_group=models.OutputGroup(\n            Name=\"cmaf-main\",\n            Outputs=[\n                models.OutputConfig(\n                    OutputName=\"cmaf-1080p\",\n                    resolution=\"1920x1080\",\n                    FramerateNumerator=30,\n                    FramerateDenominator=1,\n                    VideoBitrate=7_500_000,\n                    AudioBitrate=128_000,\n                )\n            ],\n        ),\n    ),\n    packager=models.PackagerConfig(\n        originEndpoints=[\n            models.OriginEndpoint(\n                name=\"cmaf-hybrid\",\n                ContainerType=\"CMAF\",\n                HlsManifests=[models.HlsManifest(ManifestName=\"index\")],\n            )\n        ]\n    ),\n)\n\nsession = client.create_pipeline_session(create_request, wait=True)\nprint(session.event_id)\n\nprint(\"Input:\", session.input_uri)\nprint(\"Manifests:\")\nfor url in session.signed_manifest_uris(\"john_doe\"):\n    print(\"  \", url)\n```\n\nThe SDK automatically injects your API key, validates payload structure using Pydantic models, and surfaces HTTP issues as rich exceptions.\n\n## Configuration\n\nSet your base URL or API key explicitly, or rely on environment variables.\n\n```python\nclient = StegawaveClient()\n```\n\n| Environment variable      | Description                            |\n|---------------------------|----------------------------------------|\n| `STEGAWAVE_API_KEY`       | API key provided by Stegawave          |\n| `STEGAWAVE_API_BASE_URL`  | Override the default `https://api.stegawave.com` |\n\n## Features\n\n- Strongly-typed request and response models for `/create`, `/get`, `/state`, `/delete`, `/token`, `/decode`, `/iptv`, `/passphrase`\n- High-level `PipelineSession` workflow helper to provision, poll, and sign manifests in a few lines\n- Convenience helpers for SRT listener inputs, ABR ladders, and asynchronous provisioning workflows\n- Configurable retries, timeouts, and polling intervals\n- First-class error types for authentication, validation, rate limiting, and server-side failures\n\n## Status\n\nThis client is pre-release software targeting the October 2025 API schema. Expect breaking changes as the platform evolves. Contributions and issue reports are welcome.\n\n## Development\n\n```bash\npip install -e .[dev]\npytest\n```\n\nRefer to `CHANGELOG.md` for planned enhancements and release history.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Python client for the Stegawave media pipeline API",
    "version": "0.1.10",
    "project_urls": {
        "Documentation": "https://stegawave.com/docs",
        "Homepage": "https://stegawave.com",
        "Source": "https://github.com/stegawave/saas-media-backend"
    },
    "split_keywords": [
        "aws",
        " media",
        " stegawave",
        " streaming",
        " video"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "234e82d22303d8051c1bc0746275ad909555ba727445c56e49559a3cf4a027ec",
                "md5": "9fee24aa226569c76028cb47b339d63f",
                "sha256": "7a67b7c3d3b744e02e38f4f45d60f6345edbe3666e6a186029349ddd8ae36106"
            },
            "downloads": -1,
            "filename": "stegawave-0.1.10-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9fee24aa226569c76028cb47b339d63f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 13844,
            "upload_time": "2025-10-22T20:41:45",
            "upload_time_iso_8601": "2025-10-22T20:41:45.829842Z",
            "url": "https://files.pythonhosted.org/packages/23/4e/82d22303d8051c1bc0746275ad909555ba727445c56e49559a3cf4a027ec/stegawave-0.1.10-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "65901ba2e0b6adbb821a1535ef82f43f6dbd401d6b35f9c81725dce96a31d577",
                "md5": "a61e9c7f28904bc22be3e78180812525",
                "sha256": "9e26ef01e235ce55cd9bfab9452e109e5bbdbfbd398b4d431b97c5b5bb367917"
            },
            "downloads": -1,
            "filename": "stegawave-0.1.10.tar.gz",
            "has_sig": false,
            "md5_digest": "a61e9c7f28904bc22be3e78180812525",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 11510,
            "upload_time": "2025-10-22T20:41:46",
            "upload_time_iso_8601": "2025-10-22T20:41:46.898156Z",
            "url": "https://files.pythonhosted.org/packages/65/90/1ba2e0b6adbb821a1535ef82f43f6dbd401d6b35f9c81725dce96a31d577/stegawave-0.1.10.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-22 20:41:46",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "stegawave",
    "github_project": "saas-media-backend",
    "github_not_found": true,
    "lcname": "stegawave"
}
        
Elapsed time: 2.00146s