Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
0a37bfb
Add AriaCast Receiver plugin for Music Assistant
AirPlr Jan 30, 2026
8ec4fb8
Update README to simplify installation instructions
AirPlr Jan 31, 2026
181f753
Merge branch 'music-assistant:dev' into dev
AirPlr Jan 31, 2026
80a8b81
fixed mypy and pre-commit problems for my provider
AirPlr Jan 31, 2026
fee5f31
Delete music_assistant/providers/ariacast_receiver/README.md
AirPlr Jan 31, 2026
e8936d9
fixed pre-commit problems x2
AirPlr Jan 31, 2026
6f1466f
fixed icon
AirPlr Jan 31, 2026
4b062b5
Merge remote-tracking branch 'origin/dev' into dev
AirPlr Jan 31, 2026
237738f
Merge remote-tracking branch 'origin/dev' into dev
AirPlr Jan 31, 2026
a5e7f98
Fixed Metadata and media controls after refactoring
AirPlr Jan 31, 2026
0aeef1d
Merge branch 'dev' into dev
AirPlr Feb 5, 2026
801a0e1
copilot notes addressing
AirPlr Feb 5, 2026
cf7f8eb
Addressing more copilot notes
AirPlr Feb 5, 2026
1b4e69c
Apply suggestion from @Copilot
AirPlr Feb 5, 2026
4e6cd17
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
1628367
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
cd5669b
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
adaf046
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
f8c37c7
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
05a7464
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
4804e47
Addressing last notes
AirPlr Feb 5, 2026
9c2362b
Merge branch 'dev' into dev
AirPlr Feb 5, 2026
b89e441
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
73e9de7
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
d1c7b37
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
84a2067
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
f15405d
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
8c55334
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 5, 2026
aade5ff
fix: address code review feedback for ariacast_receiver
AirPlr Feb 5, 2026
3a874a8
fix(ariacast): add playback ready event for audio/player sync
AirPlr Feb 5, 2026
95beac3
Merge branch 'music-assistant:dev' into dev
AirPlr Feb 10, 2026
6a87362
Merge branch 'music-assistant:dev' into dev
AirPlr Feb 10, 2026
1009c03
Add multi-platform AriaCast receiver binaries (darwin/linux amd64/arm…
AirPlr Feb 10, 2026
7b66501
renamed receiver name
AirPlr Feb 10, 2026
bccc12b
Merge branch 'music-assistant:dev' into dev
AirPlr Feb 11, 2026
65cb75c
Merge branch 'music-assistant:dev' into dev
AirPlr Feb 11, 2026
7638987
no redownload if same artwork
AirPlr Feb 11, 2026
4f52a43
Update music_assistant/providers/ariacast_receiver/manifest.json
AirPlr Feb 11, 2026
0150e24
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 11, 2026
9f1f1e1
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 11, 2026
9843368
fix: use shared http_session for ariacast websocket connection
AirPlr Feb 11, 2026
bfd5aaf
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 11, 2026
9ece85f
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 11, 2026
7a93b49
Merge branch 'music-assistant:dev' into dev
AirPlr Feb 11, 2026
36962fd
fix in previous copilot commit messing up the way pipe was read (no l…
AirPlr Feb 11, 2026
3b085fe
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 11, 2026
322d639
Update music_assistant/providers/ariacast_receiver/__init__.py
AirPlr Feb 11, 2026
fe43392
Merge branch 'dev' into dev
AirPlr Feb 11, 2026
c003c90
fixel last comments
AirPlr Feb 11, 2026
2e0d582
Change multi_instance setting to false
AirPlr Feb 11, 2026
49ccf73
Addressed latest comments after review
AirPlr Feb 12, 2026
e1cc22c
Merge branch 'music-assistant:dev' into dev
AirPlr Feb 12, 2026
51e1e66
Merge branch 'dev' into dev
AirPlr Feb 12, 2026
192a499
Merge branch 'dev' into dev
AirPlr Feb 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
505 changes: 505 additions & 0 deletions music_assistant/providers/ariacast_receiver/__init__.py

Large diffs are not rendered by default.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
32 changes: 32 additions & 0 deletions music_assistant/providers/ariacast_receiver/helpers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""Helpers/utils for Ariacast Receiver plugin."""

from __future__ import annotations

import os
import platform
import stat
from pathlib import Path


async def _get_binary_path() -> str:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is async?

"""Locate the correct binary for the current OS/Arch."""
base_dir = os.path.join(os.path.dirname(__file__), "bin")
system = platform.system().lower()
machine = platform.machine().lower()

if machine in ("x86_64", "amd64"):
arch = "amd64"
elif machine in ("aarch64", "arm64"):
arch = "arm64"
else:
raise RuntimeError(f"Unsupported architecture: {machine}")

binary_name = f"ariacast_{system}_{arch}"
binary_path = os.path.join(base_dir, binary_name)

if not os.path.exists(binary_path):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is blocking IO and should be wrapped in asyncio.to_thread()

raise FileNotFoundError(f"Binary not found at {binary_path}")

Path(binary_path).chmod(Path(binary_path).stat().st_mode | stat.S_IEXEC)

return binary_path
46 changes: 46 additions & 0 deletions music_assistant/providers/ariacast_receiver/icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions music_assistant/providers/ariacast_receiver/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"type": "plugin",
"domain": "ariacast_receiver",
"name": "AriaCast Receiver",
"stage": "alpha",
"description": "Receive AriaCast audio streams over WebSocket and use them as a source in Music Assistant.",
"codeowners": ["@music-assistant"],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be @AirPlr I think ;-)

"documentation": "https://github.com/music-assistant/server/tree/main/music_assistant/providers/ariacast_receiver",
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation URL should follow the codebase convention of using https://music-assistant.io/plugins/ariacast-receiver/ instead of a GitHub URL. All other plugin providers in the codebase use the music-assistant.io domain for documentation.

Copilot uses AI. Check for mistakes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have a separate repo for our documentation website here, When this PR is ready to be merged, we can update the url with one that links to musicassistant.io

"multi_instance": false
}
Loading