An async python package for interfacing with Cambridge Audio / Stream Magic compatible streamers.
Project description
aiostreammagic
An async python package for interfacing with Cambridge Audio / Stream Magic compatible streamers
About
This module implements a Python client for the Stream Magic API used to control Cambridge Audio streamers. The API connects over websockets and supports several streamers, receivers, and pre-amps.
Supported Devices
- Cambridge Audio Evo 75
- Cambridge Audio Evo 150
- Cambridge Audio CXN
- Cambridge Audio CXN (v2)
- Cambridge Audio CXR120
- Cambridge Audio CXR200
- Cambridge Audio 851N
- Cambridge Audio Edge NQ
If your model is not on the list of supported devices, and everything works correctly then add it to the list by opening a pull request.
Installation
pip install aiostreammagic
Examples
Basic Example
import asyncio
from aiostreammagic import StreamMagicClient, Source, Info
HOST = "192.168.20.218"
async def main():
"""Basic demo entrypoint."""
client = StreamMagicClient("192.168.20.218")
await client.connect()
info: Info = await client.get_info()
sources: list[Source] = await client.get_sources()
print(f"Model: {info.model}")
for source in sources:
print(f"Name: {source.id} ({source.id})")
await client.disconnect()
if __name__ == '__main__':
asyncio.run(main())
Subscription Example
The Cambridge Audio StreamMagic API can automatically notify the client of changes instead of the need for polling. Register a callback to be called whenver new information is available.
import asyncio
from aiostreammagic import StreamMagicClient
HOST = "192.168.20.218"
async def on_state_change(client: StreamMagicClient):
"""Called when new information is received."""
print(f"System info: {client.get_info()}")
print(f"Sources: {client.get_sources()}")
print(f"State: {client.get_state()}")
print(f"Play State: {client.get_play_state()}")
print(f"Now Playing: {client.get_now_playing()}")
async def main():
"""Subscribe demo entrypoint."""
client = StreamMagicClient("192.168.20.218")
await client.register_state_update_callbacks(on_state_change)
await client.connect()
# Play media using the unit's front controls or StreamMagic app
await asyncio.sleep(60)
await client.disconnect()
if __name__ == '__main__':
asyncio.run(main())
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
File details
Details for the file aiostreammagic-2.8.6.tar.gz
.
File metadata
- Download URL: aiostreammagic-2.8.6.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9394740e4e5ce28d2d53f9b844dd449e761789c68a91aced57e9e2d9f9f92521 |
|
MD5 | 5f4fbeac7c9928ccc30a026b029b1cf4 |
|
BLAKE2b-256 | 3462067156ea0288c26bcabd6cade48ab62583435490a34f982bc407194f041e |
File details
Details for the file aiostreammagic-2.8.6-py3-none-any.whl
.
File metadata
- Download URL: aiostreammagic-2.8.6-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc52741c3f4a7af5e9002b2c7ec40cbf37923f55c5b02f5008d6a97c61ee9a63 |
|
MD5 | eb40d41bc381f0b10a42fdd28f03df7a |
|
BLAKE2b-256 | dcd48acfdb80022df199e2ec34df5fed6d27d0be305d35ba4d12bb552e231625 |