Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Stremio Addon Framework Version Python Version Downloads

A Python framework for building Stremio addons with async support, leveraging BlackSheep for fast HTTP handling and modern tooling.

Features ✨

  • Async-first: Leverage Python's asyncio for high-performance addons.
  • Decorator-based handlers: Easily register handlers for resources like stream, meta, catalog, and subtitles.
  • Static file serving: Serve static directories with custom cache control.
  • Central registry publishing: Publish your addon to Stremio's central API with one call.

Installation

pip install stremio

Quick Start

from stremio import Addon

# Define your addon manifest.
# See: https://github.com/Stremio/stremio-addon-sdk/blob/master/docs/api/responses/manifest.md
manifest = {
    "id": "org.example.myaddon",
    "version": "1.0.0",
    "name": "My Awesome Addon",
    "description": "This is a simple Awesome Addon!",
    "logo": "https://myaddon.com/logo.png",
    "catalogs": [],
    "resources": ["stream", "meta"],  # Add your supported resources here
    "types": ["movie"]
}

addon = Addon(manifest=manifest, port=7000)

# Add a stream handler
@addon.stream()
async def stream_handler(data):
    return {
        "streams": [{"name": "4K", "url": "https://example.com/cars_3.mp4"}]
    }

# Add a subtitles handler
@addon.subtitles()
async def subtitles_handler(data):
    return {
        "subtitles": [{"id": "1", "url": "https://example.com/cars_3_ar.srt", "lang": "Arabic"}]
    }

if __name__ == "__main__":
    addon.run()

Usage Guide

1. Initialize the Addon

addon = Addon(
    manifest=manifest,
    static_dir=["static"],  # Serve static files from these directories
    cache_max_age=3600,     # Cache responses for 1 hour; you can override this on handler response
    public_host="myaddon.com",
    log_level="info"
)
Parameter Description
manifest Required Addon manifest (validated on initialization).
static_dir Directories to serve static files from.
cache_max_age Max cache age in seconds for responses (default: 0).
public_host Public URL for addon installation links (e.g., stremio://myaddon.com/manifest.json).
log_level Server log level (debug, info, warning, error, critical).

2. Register Resource Handlers

Use decorators to register handlers:

Stream Handler

@addon.stream()
async def stream_handler(data):
    # data = {"id": "tt12345", "type": "movie", "extraArgs": None}
    return {"streams": [...]}  # See: https://github.com/Stremio/stremio-addon-sdk/blob/master/docs/api/responses/stream.md

Meta Handler

@addon.meta()
async def meta_handler(data):
    return {"meta": {...}}  # See: https://github.com/Stremio/stremio-addon-sdk/blob/master/docs/api/responses/meta.md

Catalog Handler

@addon.catalog()
async def catalog_handler(data):
    return {"metas": [...]}  # Return list of meta items. See: https://github.com/Stremio/stremio-addon-sdk/blob/master/docs/api/requests/defineCatalogHandler.md#returns

Subtitles Handler

@addon.subtitles()
async def subtitles_handler(data):
    return {"subtitles": [...]}  # See: https://github.com/Stremio/stremio-addon-sdk/blob/master/docs/api/responses/subtitles.md

3. Custom Landing Page

@addon.landing_page()
async def landing_page(request): # homepage a.k.a accessing myaddon.com/
    return "<h1>Welcome to My Addon!</h1>"

4. Publish to Central Registry

async def publish_addon():
    await addon.publishToCentral(
        manifest_url="https://myaddon.com/manifest.json",
    )

Advanced Configuration

Cache Control

Return these keys in your handler responses to set cache headers:

{
    "cacheMaxAge": 3600,          # max-age=3600
    "staleRevalidate": 86400,     # stale-while-revalidate=86400
    "staleError": 172800          # stale-if-error=172800
}

Static Files

Addon(static_dir=["assets", "public"])

Files in assets/file.txt will be available at myaddon.com/assets/file.txt.


License

This project is licensed under the MIT License.

Metadata

Release files for Stremio 0.1.0.dev0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Stremio 0.1.0.dev0
File Size Uploaded
stremio-0.1.0.dev0.tar.gz 8.3 kB Details

Release files / stremio-0.1.0.dev0.tar.gz

Download URL stremio-0.1.0.dev0.tar.gz
Size 8.3 kB
Tags Source
SHA-256 checksum
How to use checksums
01c3be641aa61259dea361be3093822723f8cbe32199cf1371c1e31cf507b997
BLAKE2b-256 checksum
How to use checksums
fa69583ee552b323f84d8d1ec0a836d85617665a16afe5dd907719695ec68bf4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 21, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0.dev0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page