Skip to content

Media browse, search and playback support#65

Open
zehnm wants to merge 10 commits intomainfrom
feat/media-browse
Open

Media browse, search and playback support#65
zehnm wants to merge 10 commits intomainfrom
feat/media-browse

Conversation

@zehnm
Copy link
Contributor

@zehnm zehnm commented Mar 16, 2026

Implement media browsing, searching and playback.

Browsing and searching works quite well. Playback has some quirks, not every item seems to be playable. Figuring out what is actually playable, and how, is a major challenge with the Roon API...

Other changes:

  • Send image URL to client instead of embedded base64 image data.
  • Updated dependencies:
    • latest integration-api with media browse support
    • latest node-roon-api
  • Update Node.js to v22.13 matching the device runtime environment
  • Improved TypeScript definitions of the Roon API

Relates to unfoldedcircle/feature-and-bug-tracker#70

This PR would not have been possible without these helpful resources (and no, the Roon API is not self-describing):

zehnm added 8 commits March 14, 2026 17:26
- latest integration-api with media browse support
- latest node-roon-api
New `RoonMediaPlayer` class:
- better encapsulation of media-player functionality.
- required for media browse and search functions.
- Moved media-player command handling into `RoonMediaPlayer`.
Send image URL to client instead of embedded base64 image data.
Moved playItemById and playItemByPath methods to BrowseService.
@zehnm zehnm self-assigned this Mar 16, 2026
zehnm added 2 commits March 16, 2026 19:12
- Use new `subtitle` field in media browsing
- Added support for `PlayMediaAction` in player attributes, with
  predefined actions (`PlayNow`, `PlayNext`, `AddToQueue`).
@zehnm zehnm marked this pull request as ready for review March 16, 2026 18:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant