Updated Artwork handling on AriaCast Receiver (#3226)
* Add AriaCast Receiver plugin for Music Assistant
- Implemented AriaCast Receiver plugin to stream audio from Android devices to Music Assistant players.
- Added README.md with features, installation, configuration, and usage instructions.
- Created configuration classes for audio and server settings.
- Developed metadata handling for AriaCast streams.
- Implemented UDP discovery and WebSocket server for audio and metadata streaming.
- Added helper functions for local IP retrieval and artwork downloading.
- Included SVG icon for the plugin.
- Updated manifest.json with documentation link and requirements.
* Update README to simplify installation instructions
Removed installation instructions and updated configuration step for clarity.
* fixed mypy and pre-commit problems for my provider
* Delete music_assistant/providers/ariacast_receiver/README.md
* fixed pre-commit problems x2
* fixed icon
* Merge remote-tracking branch 'origin/dev' into dev
* Fixed Metadata and media controls after refactoring
* copilot notes addressing
* Addressing more copilot notes
* Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Addressing last notes
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: address code review feedback for ariacast_receiver
* fix(ariacast): add playback ready event for audio/player sync
- Add _playback_ready event to coordinate audio handler and player stream
- Audio handler waits up to 2s for player to become ready after starting playback
- get_audio_stream signals ready when it starts consuming frames
- Clear ready state on cleanup in _clear_active_player and stream end
This reduces audio frame loss during player setup by synchronizing
the audio receiver with the player's readiness to consume frames.
* Add multi-platform AriaCast receiver binaries (darwin/linux amd64/arm64/arm)
* renamed receiver name
* no redownload if same artwork
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/manifest.json
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: use shared http_session for ariacast websocket connection
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix in previous copilot commit messing up the way pipe was read (no loop)
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fixel last comments
* Change multi_instance setting to false
* Addressed latest comments after review
- Switched from pipe to stdout
- Dropped linux arm
- Moved _get_binary_path() to helpers.py
* Implemented stderr logging, robust WebSocket connection retries, improved artwork handling, and player switching control.
Updated Manifest
* Fix after PlayerController renamed all to all_players and players.get to get_player()
* Update music_assistant/providers/ariacast_receiver/__init__.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update music_assistant/providers/ariacast_receiver/__init__.py
Added suggested track change comments
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update documentation URL in manifest.json
* Added README for the binary of AriaCast Receiver
* updated receiver for artwork
* final fixes
* addressed copilot comment
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>