screamrouter


Namescreamrouter JSON
Version 0.3.4 PyPI version JSON
download
home_pageNone
SummaryScreamRouter audio routing system with web interface and C++ audio engine
upload_time2025-10-08 06:21:05
maintainerNone
docs_urlNone
authorNetham45
requires_python>=3.10
licenseNone
keywords audio routing scream network streaming webrtc
VCS
bugtrack_url
requirements dnspython fastapi httpx Jinja2 netifaces numpy pydantic pyOpenSSL PyYAML setproctitle starlette uvicorn websockets websockify uvicorn zeroconf pybind11 pybind11-stubgen
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # **ScreamRouter**

![Screenshot of ScreamRouter](/images/ScreamRouter.png)

## Table of Contents
1. [What is ScreamRouter](#what-is-screamrouter)
2. [Key Features](#key-features)
3. [Sources](#sources)
4. [Receivers](#receivers)
5. [Use Cases](#use-cases)
6. [Documentation](#documentation)
7. [Accessibility](#accessibility)
8. [Example Devices](#example-devices)

## What is ScreamRouter

ScreamRouter is a versatile audio routing and management system with a Python frontend/configuration layer and C++ backend, designed for network audio streaming. It supports Scream and RTP audio sources, along with Scream receivers and web-based MP3 streamers.

## Key Features

### Audio Routing and Configuration
- Configure Sources by IP address.
- Set up Routes between Sources and Sinks.
- Customize Sinks with Bit Depth, Sample Rate, Channel Layout, IP, and Port.
- Group Sources and Sinks for simultaneous control and playback.
- Volume control at every level: Source, Route, Sink, and Group.

### Audio Processing and Playback
- Custom mixer/equalizer/channel layout processor for minimal latency, implemented in both Python and C++.
- Adjustable equalization for any sink, route, source, or group.
- MP3 stream exposure for browser-based listening of all sinks.
- URL playback capability for sinks or sink groups.
- Milkdrop Visualizations via [Butterchurn](https://github.com/jberg/butterchurn) project.
- Keeps a rolling buffer of streams that can be used for time shifting/rewinding streams.

### Integration and Compatibility
- Home Assistant Custom Component for managing configuration and media playback.
- Embedded noVNC for remote computer control.

### System Management
- Automatic YAML saving on setting changes.
- Flexible plugin system for easy addition of new sources and functionalities.
- API and web interface for media control commands to containers.
- Advanced configuration management and solving system.
- Comprehensive logging system.

## Sources
- RTP/Linux Source
- Windows Source
- ESP32S3 USB Audio Card and Toslink Senders
- Raspberry Pi Zero W / Raspberry Pi Zero 2 USB Gadget Sound Card Sender
- Amazon Music Docker Container
- Firefox Docker Container
- Spotify Docker Container
- Plugin system, including the ability to play arbitrary URLs out.

## Receivers
- Windows Receivers
- Raspberry Pi/Linux Receiver
- ESP32/ESP32s3 spdif/USB UAC 1.0 audio receiver
- ESP32 A1S Audiokit Receiver
- Android Receiver
- Python Scream Receiver

## Use Cases

### Comprehensive Whole-House Audio Systems
Integrate multiple Scream Sources and Receivers for seamless audio distribution throughout your home.

### Advanced Volume Management
Implement granular volume control at both group and individual sink levels, ensuring optimal audio balance across your setup.

### Web-Based Audio Access
Utilize the 'Listen to Sink' feature to enable browser-based audio playback, enhancing accessibility and flexibility.

### Universal Sink Compatibility
PCM receivers are available for most popular platforms, and for ones that can't receive PCM they can use the MP3 stream.

### Programmatic Audio Control
Employ the FastAPI interface or Home Assistant integration for automated management of sink activation, deactivation, and volume adjustments.

### Home Assistant Integration
Incorporate sound effects and Text-to-Speech functionality into Home Assistant automations and play them from any speaker in your house for an enhanced smart home experience.

### Sound Quality Enhancement
Utilize built-in equalization tools to optimize audio output, particularly beneficial for improving the performance of budget-friendly speakers.

### Time-Shifting and Audio Buffering
Maintains a rolling buffer of the most recent 5 minutes of audio for each stream allowing rewinding to and replaying audio within the buffered timeframe.

## Documentation

All documentation is available at [https://screamrouter.net](https://screamrouter.net)

## Accessibility

ScreamRouter aims to be accessible to those with visual impairments. To this effect, the UI has been designed with tooltips and alt tags on every element and can be used from a keyboard.

If you encounter any issues affecting accessibility, please file an issue on GitHub.

## Example Devices

### ESP32S3 Portable Receiver

![Portable ESP32S3 Scream Receiver](/images/esp32s3_receiver.jpg)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "screamrouter",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "audio, routing, scream, network, streaming, webrtc",
    "author": "Netham45",
    "author_email": null,
    "download_url": null,
    "platform": null,
    "description": "# **ScreamRouter**\n\n![Screenshot of ScreamRouter](/images/ScreamRouter.png)\n\n## Table of Contents\n1. [What is ScreamRouter](#what-is-screamrouter)\n2. [Key Features](#key-features)\n3. [Sources](#sources)\n4. [Receivers](#receivers)\n5. [Use Cases](#use-cases)\n6. [Documentation](#documentation)\n7. [Accessibility](#accessibility)\n8. [Example Devices](#example-devices)\n\n## What is ScreamRouter\n\nScreamRouter is a versatile audio routing and management system with a Python frontend/configuration layer and C++ backend, designed for network audio streaming. It supports Scream and RTP audio sources, along with Scream receivers and web-based MP3 streamers.\n\n## Key Features\n\n### Audio Routing and Configuration\n- Configure Sources by IP address.\n- Set up Routes between Sources and Sinks.\n- Customize Sinks with Bit Depth, Sample Rate, Channel Layout, IP, and Port.\n- Group Sources and Sinks for simultaneous control and playback.\n- Volume control at every level: Source, Route, Sink, and Group.\n\n### Audio Processing and Playback\n- Custom mixer/equalizer/channel layout processor for minimal latency, implemented in both Python and C++.\n- Adjustable equalization for any sink, route, source, or group.\n- MP3 stream exposure for browser-based listening of all sinks.\n- URL playback capability for sinks or sink groups.\n- Milkdrop Visualizations via [Butterchurn](https://github.com/jberg/butterchurn) project.\n- Keeps a rolling buffer of streams that can be used for time shifting/rewinding streams.\n\n### Integration and Compatibility\n- Home Assistant Custom Component for managing configuration and media playback.\n- Embedded noVNC for remote computer control.\n\n### System Management\n- Automatic YAML saving on setting changes.\n- Flexible plugin system for easy addition of new sources and functionalities.\n- API and web interface for media control commands to containers.\n- Advanced configuration management and solving system.\n- Comprehensive logging system.\n\n## Sources\n- RTP/Linux Source\n- Windows Source\n- ESP32S3 USB Audio Card and Toslink Senders\n- Raspberry Pi Zero W / Raspberry Pi Zero 2 USB Gadget Sound Card Sender\n- Amazon Music Docker Container\n- Firefox Docker Container\n- Spotify Docker Container\n- Plugin system, including the ability to play arbitrary URLs out.\n\n## Receivers\n- Windows Receivers\n- Raspberry Pi/Linux Receiver\n- ESP32/ESP32s3 spdif/USB UAC 1.0 audio receiver\n- ESP32 A1S Audiokit Receiver\n- Android Receiver\n- Python Scream Receiver\n\n## Use Cases\n\n### Comprehensive Whole-House Audio Systems\nIntegrate multiple Scream Sources and Receivers for seamless audio distribution throughout your home.\n\n### Advanced Volume Management\nImplement granular volume control at both group and individual sink levels, ensuring optimal audio balance across your setup.\n\n### Web-Based Audio Access\nUtilize the 'Listen to Sink' feature to enable browser-based audio playback, enhancing accessibility and flexibility.\n\n### Universal Sink Compatibility\nPCM receivers are available for most popular platforms, and for ones that can't receive PCM they can use the MP3 stream.\n\n### Programmatic Audio Control\nEmploy the FastAPI interface or Home Assistant integration for automated management of sink activation, deactivation, and volume adjustments.\n\n### Home Assistant Integration\nIncorporate sound effects and Text-to-Speech functionality into Home Assistant automations and play them from any speaker in your house for an enhanced smart home experience.\n\n### Sound Quality Enhancement\nUtilize built-in equalization tools to optimize audio output, particularly beneficial for improving the performance of budget-friendly speakers.\n\n### Time-Shifting and Audio Buffering\nMaintains a rolling buffer of the most recent 5 minutes of audio for each stream allowing rewinding to and replaying audio within the buffered timeframe.\n\n## Documentation\n\nAll documentation is available at [https://screamrouter.net](https://screamrouter.net)\n\n## Accessibility\n\nScreamRouter aims to be accessible to those with visual impairments. To this effect, the UI has been designed with tooltips and alt tags on every element and can be used from a keyboard.\n\nIf you encounter any issues affecting accessibility, please file an issue on GitHub.\n\n## Example Devices\n\n### ESP32S3 Portable Receiver\n\n![Portable ESP32S3 Scream Receiver](/images/esp32s3_receiver.jpg)\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "ScreamRouter audio routing system with web interface and C++ audio engine",
    "version": "0.3.4",
    "project_urls": {
        "Homepage": "https://github.com/netham45/screamrouter",
        "Issues": "https://github.com/netham45/screamrouter/issues",
        "Repository": "https://github.com/netham45/screamrouter"
    },
    "split_keywords": [
        "audio",
        " routing",
        " scream",
        " network",
        " streaming",
        " webrtc"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6730eb40e16a7c6eb9a7d0499565b94829ea50ebe65916d31f0bf7cac7d42607",
                "md5": "1605b7165380854f8b33a4cb28be3623",
                "sha256": "9592b91eefe49cb70b7b270cd30905a5150980953026ad2ead15812284c0e6d7"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "1605b7165380854f8b33a4cb28be3623",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 9299453,
            "upload_time": "2025-10-08T06:21:05",
            "upload_time_iso_8601": "2025-10-08T06:21:05.786866Z",
            "url": "https://files.pythonhosted.org/packages/67/30/eb40e16a7c6eb9a7d0499565b94829ea50ebe65916d31f0bf7cac7d42607/screamrouter-0.3.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "08d30ceb9cf58b316edb2e5596ae09bafb886431da4df9d67f6293fe6aeb105f",
                "md5": "b75a00bccce4e7438ef95fb95f650d76",
                "sha256": "a24da98a2257ea29a2e5993806be3782c893d48bfc83d6197aa22b1de2832ef6"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b75a00bccce4e7438ef95fb95f650d76",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 9126627,
            "upload_time": "2025-10-08T06:21:08",
            "upload_time_iso_8601": "2025-10-08T06:21:08.205861Z",
            "url": "https://files.pythonhosted.org/packages/08/d3/0ceb9cf58b316edb2e5596ae09bafb886431da4df9d67f6293fe6aeb105f/screamrouter-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b058492cd6440f0bf17e7dc9d3dedea370928294bbbb8a3583fd9eb13c553295",
                "md5": "adf0f740a855d6433b1843cd43563752",
                "sha256": "f90a84dc74901e820177a233df730e32b9550c12f129b33d5a21d33eb5cefc89"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "adf0f740a855d6433b1843cd43563752",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 6643559,
            "upload_time": "2025-10-08T06:21:10",
            "upload_time_iso_8601": "2025-10-08T06:21:10.085754Z",
            "url": "https://files.pythonhosted.org/packages/b0/58/492cd6440f0bf17e7dc9d3dedea370928294bbbb8a3583fd9eb13c553295/screamrouter-0.3.4-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4736576529333b2419a2c97336123a5189a242fe08fa659d29e1dd1b8ef1c4ca",
                "md5": "4aa8521813dd5a55484ae47d3915c47b",
                "sha256": "c231922b7d06474f98e29e8ec31c9c1f3207f03bf93559dbbaabf50aafbb4be5"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4aa8521813dd5a55484ae47d3915c47b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 7100117,
            "upload_time": "2025-10-08T06:21:11",
            "upload_time_iso_8601": "2025-10-08T06:21:11.724603Z",
            "url": "https://files.pythonhosted.org/packages/47/36/576529333b2419a2c97336123a5189a242fe08fa659d29e1dd1b8ef1c4ca/screamrouter-0.3.4-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8a2858320136a4c1e893206157c232833be8af1324211108f2bbd61bc931b120",
                "md5": "f219b321d514c9220ccd302757b67004",
                "sha256": "c894ec9ab1091e8bf5ce8836cadd1ca77b48d7a05662fb361fafe63d40951c96"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "f219b321d514c9220ccd302757b67004",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 9301379,
            "upload_time": "2025-10-08T06:21:13",
            "upload_time_iso_8601": "2025-10-08T06:21:13.590474Z",
            "url": "https://files.pythonhosted.org/packages/8a/28/58320136a4c1e893206157c232833be8af1324211108f2bbd61bc931b120/screamrouter-0.3.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "52839ac72cc2f0f64922d862e122ccde2c7a1b06f50254d7fc335a8b16f2c863",
                "md5": "861091fb19488d9bedaeda8fb1ca8cb2",
                "sha256": "d144c609d919271fc69fea5566009a85c4f5120c88891c30428bf7c97e175d7d"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "861091fb19488d9bedaeda8fb1ca8cb2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 9130420,
            "upload_time": "2025-10-08T06:21:15",
            "upload_time_iso_8601": "2025-10-08T06:21:15.750337Z",
            "url": "https://files.pythonhosted.org/packages/52/83/9ac72cc2f0f64922d862e122ccde2c7a1b06f50254d7fc335a8b16f2c863/screamrouter-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bef7d8ecca1749bb0017b488e22a756c2d32604023107268b2ac010ac77fd438",
                "md5": "a31c97f8565801b32e23b7f81ebd107b",
                "sha256": "0e56a9f75086aead5c24e5fce487eda2c968be42fb2656e7e73932d17cfe976b"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "a31c97f8565801b32e23b7f81ebd107b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 6644199,
            "upload_time": "2025-10-08T06:21:17",
            "upload_time_iso_8601": "2025-10-08T06:21:17.948729Z",
            "url": "https://files.pythonhosted.org/packages/be/f7/d8ecca1749bb0017b488e22a756c2d32604023107268b2ac010ac77fd438/screamrouter-0.3.4-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "535b786f4ff47df44a2aac9c29c0d667c701461a30fa6bbb704739c5c36dd4f5",
                "md5": "b5a4f462f3bee9a823830d030653d7d4",
                "sha256": "e9e9dd21080a183bec4b3dde8b9a130f48514de365715e2da5845e71fc7fdf84"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b5a4f462f3bee9a823830d030653d7d4",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 7100501,
            "upload_time": "2025-10-08T06:21:19",
            "upload_time_iso_8601": "2025-10-08T06:21:19.717858Z",
            "url": "https://files.pythonhosted.org/packages/53/5b/786f4ff47df44a2aac9c29c0d667c701461a30fa6bbb704739c5c36dd4f5/screamrouter-0.3.4-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3693d3701c3371a4a6744a28ec380de616875be68b89221ee0d2b1cd26f2f4f9",
                "md5": "23a33bb2c84fd9c4a3314fddc7204b97",
                "sha256": "cabf43ba9b4a0bee1577941217ddb5dd36ca412a47b12234da39dab78a2056d5"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "23a33bb2c84fd9c4a3314fddc7204b97",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 9303906,
            "upload_time": "2025-10-08T06:21:21",
            "upload_time_iso_8601": "2025-10-08T06:21:21.459493Z",
            "url": "https://files.pythonhosted.org/packages/36/93/d3701c3371a4a6744a28ec380de616875be68b89221ee0d2b1cd26f2f4f9/screamrouter-0.3.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fa7dead1334d4491cb52744e76de8f7bdb1685ea3ef16c832df9afccde9da8bb",
                "md5": "eafd9ed321dd7b79fcbc990ad5787f02",
                "sha256": "5ec59b921bb7aa64ac6c76f8680fcc6a262d17931ae9ca444dada2d88c030376"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "eafd9ed321dd7b79fcbc990ad5787f02",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 9137850,
            "upload_time": "2025-10-08T06:21:23",
            "upload_time_iso_8601": "2025-10-08T06:21:23.262074Z",
            "url": "https://files.pythonhosted.org/packages/fa/7d/ead1334d4491cb52744e76de8f7bdb1685ea3ef16c832df9afccde9da8bb/screamrouter-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8a70aa623388ccbd5cf533bcb7c786bfefb5cff0b311f5f28df96bd4b1ccec86",
                "md5": "0f1d082e63d94387a02c8ad33fcce474",
                "sha256": "c5c7cdaec8bf39d96e56a4dc7ddf8e9103cfdc0c6585f54789bea3de78d5963e"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "0f1d082e63d94387a02c8ad33fcce474",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 6643105,
            "upload_time": "2025-10-08T06:21:25",
            "upload_time_iso_8601": "2025-10-08T06:21:25.590576Z",
            "url": "https://files.pythonhosted.org/packages/8a/70/aa623388ccbd5cf533bcb7c786bfefb5cff0b311f5f28df96bd4b1ccec86/screamrouter-0.3.4-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6a1437b18dc0d35ef1a85a981e844afa5246e5ed52cd42bcfff3f416f8669493",
                "md5": "49cb84fc34a45669c0cfe87501930bb1",
                "sha256": "4e6c940c2de2337cfc7242839141852b35070df379fb8f846ed8402169106920"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "49cb84fc34a45669c0cfe87501930bb1",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 7102365,
            "upload_time": "2025-10-08T06:21:27",
            "upload_time_iso_8601": "2025-10-08T06:21:27.057239Z",
            "url": "https://files.pythonhosted.org/packages/6a/14/37b18dc0d35ef1a85a981e844afa5246e5ed52cd42bcfff3f416f8669493/screamrouter-0.3.4-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f48b69e86874b9fc92787b703a65002a8bf5d09aed6dfc131a122db36fbd9b30",
                "md5": "0e0c7e475895f8639acfa8c2811a2960",
                "sha256": "dcf4abe7ac50b3e459183b85d4721ea8cb48cc0eacb31ef30684900a06cfee85"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "0e0c7e475895f8639acfa8c2811a2960",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 9304159,
            "upload_time": "2025-10-08T06:21:28",
            "upload_time_iso_8601": "2025-10-08T06:21:28.577758Z",
            "url": "https://files.pythonhosted.org/packages/f4/8b/69e86874b9fc92787b703a65002a8bf5d09aed6dfc131a122db36fbd9b30/screamrouter-0.3.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0352e9156a26a403788b8391dd47576b9c092bd5335af52c7f8d3afb933679d6",
                "md5": "682d13b8f6b0b728bb05c53ed1fa635e",
                "sha256": "b07c84eb2710f79b63718ec6e687b74f024d80fb3a49a4f6cac4ded8a1451450"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "682d13b8f6b0b728bb05c53ed1fa635e",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 9137416,
            "upload_time": "2025-10-08T06:21:30",
            "upload_time_iso_8601": "2025-10-08T06:21:30.362325Z",
            "url": "https://files.pythonhosted.org/packages/03/52/e9156a26a403788b8391dd47576b9c092bd5335af52c7f8d3afb933679d6/screamrouter-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6893bf332b138698f3dd401b699b372cfbbc0fbdebbb05742fcd9ba5ce348f4d",
                "md5": "4008cfc3825a714b514bd83a26eff661",
                "sha256": "d46d9532ddbf6238f3a5f579955fed99d3d872ec2d3881e5fbe0131cf166181a"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp313-cp313-win32.whl",
            "has_sig": false,
            "md5_digest": "4008cfc3825a714b514bd83a26eff661",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 6643266,
            "upload_time": "2025-10-08T06:21:32",
            "upload_time_iso_8601": "2025-10-08T06:21:32.577559Z",
            "url": "https://files.pythonhosted.org/packages/68/93/bf332b138698f3dd401b699b372cfbbc0fbdebbb05742fcd9ba5ce348f4d/screamrouter-0.3.4-cp313-cp313-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7d8c5c10111551c98a9e5106c6392d270f2ebc3d612aed11815786d4f892e253",
                "md5": "160e2a45a1e384458103435590ca2a59",
                "sha256": "60b7212ffca11662d3754c2962a4a96acd22b4cd2c849d16e1ff7f6b536600ce"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "160e2a45a1e384458103435590ca2a59",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 7102235,
            "upload_time": "2025-10-08T06:21:34",
            "upload_time_iso_8601": "2025-10-08T06:21:34.578002Z",
            "url": "https://files.pythonhosted.org/packages/7d/8c/5c10111551c98a9e5106c6392d270f2ebc3d612aed11815786d4f892e253/screamrouter-0.3.4-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d0117e985fea171be70f9e56ecc5846a544f002cf77843115e9495c0861e24db",
                "md5": "c72ac9f42b2450a6bf6df0b462ce17d4",
                "sha256": "a7b58c5bac960b9d9de70718880d799c57a81f619f1033e00f7a7d1d7aad599d"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "c72ac9f42b2450a6bf6df0b462ce17d4",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.10",
            "size": 9305503,
            "upload_time": "2025-10-08T06:21:36",
            "upload_time_iso_8601": "2025-10-08T06:21:36.519867Z",
            "url": "https://files.pythonhosted.org/packages/d0/11/7e985fea171be70f9e56ecc5846a544f002cf77843115e9495c0861e24db/screamrouter-0.3.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d8efc5e604f5b9edf58ecf63ddbc70e7b4416330c5bd6f1d854ab1e51bebac00",
                "md5": "59b41f2c58acea3d0394370161c9d1f1",
                "sha256": "3dbab145560ed97f08744ad616cdc7986cb478eb252a3329c25f32ff0acac622"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "59b41f2c58acea3d0394370161c9d1f1",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.10",
            "size": 9137488,
            "upload_time": "2025-10-08T06:21:38",
            "upload_time_iso_8601": "2025-10-08T06:21:38.349908Z",
            "url": "https://files.pythonhosted.org/packages/d8/ef/c5e604f5b9edf58ecf63ddbc70e7b4416330c5bd6f1d854ab1e51bebac00/screamrouter-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9e745b432a16a20c6cdb3dec7883d2a43767ecb4cd330f0df33b31dadcb48564",
                "md5": "d29a205521ed9adfa3f56c1f755760d2",
                "sha256": "ff9c02bac9ff0319a528406bf164e2c5e873f17851f89288080cb74a0892c508"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp314-cp314-win32.whl",
            "has_sig": false,
            "md5_digest": "d29a205521ed9adfa3f56c1f755760d2",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.10",
            "size": 6726777,
            "upload_time": "2025-10-08T06:21:40",
            "upload_time_iso_8601": "2025-10-08T06:21:40.654750Z",
            "url": "https://files.pythonhosted.org/packages/9e/74/5b432a16a20c6cdb3dec7883d2a43767ecb4cd330f0df33b31dadcb48564/screamrouter-0.3.4-cp314-cp314-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "497e83ec50b7cf84e407cde8a395aa81e76266a2ce559455aa1368bb78d35783",
                "md5": "52d54786e2b5dd14d26021d467e61bab",
                "sha256": "7d4fad9425be1a07b12a3d243fad3c375c558325845188b0b2632178824baf28"
            },
            "downloads": -1,
            "filename": "screamrouter-0.3.4-cp314-cp314-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "52d54786e2b5dd14d26021d467e61bab",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.10",
            "size": 7215391,
            "upload_time": "2025-10-08T06:21:42",
            "upload_time_iso_8601": "2025-10-08T06:21:42.201794Z",
            "url": "https://files.pythonhosted.org/packages/49/7e/83ec50b7cf84e407cde8a395aa81e76266a2ce559455aa1368bb78d35783/screamrouter-0.3.4-cp314-cp314-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-08 06:21:05",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "netham45",
    "github_project": "screamrouter",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "dnspython",
            "specs": []
        },
        {
            "name": "fastapi",
            "specs": []
        },
        {
            "name": "httpx",
            "specs": []
        },
        {
            "name": "Jinja2",
            "specs": []
        },
        {
            "name": "netifaces",
            "specs": []
        },
        {
            "name": "numpy",
            "specs": []
        },
        {
            "name": "pydantic",
            "specs": []
        },
        {
            "name": "pyOpenSSL",
            "specs": []
        },
        {
            "name": "PyYAML",
            "specs": []
        },
        {
            "name": "setproctitle",
            "specs": []
        },
        {
            "name": "starlette",
            "specs": []
        },
        {
            "name": "uvicorn",
            "specs": []
        },
        {
            "name": "websockets",
            "specs": []
        },
        {
            "name": "websockify",
            "specs": []
        },
        {
            "name": "uvicorn",
            "specs": []
        },
        {
            "name": "zeroconf",
            "specs": []
        },
        {
            "name": "pybind11",
            "specs": [
                [
                    ">=",
                    "2.6"
                ]
            ]
        },
        {
            "name": "pybind11-stubgen",
            "specs": []
        }
    ],
    "lcname": "screamrouter"
}
        
Elapsed time: 1.39077s