Skip to content

feat: add Jellyfin media source integration - #910

Merged
Geoxor merged 10 commits into
masterfrom
add-jellyfin
Aug 27, 2026
Merged

feat: add Jellyfin media source integration#910
Geoxor merged 10 commits into
masterfrom
add-jellyfin

Conversation

@N1kO23

@N1kO23 N1kO23 commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator
  • Implemented Jellyfin media source functionality, allowing users to connect to Jellyfin servers for music streaming
  • Added localization placeholder strings for Jellyfin settings
  • Created JellyfinMediaSource class to handle authentication, media fetching, and syncing
  • Updated MediaSourceManager to support adding and managing Jellyfin sources
  • Enhanced player and track logic to accommodate Jellyfin tracks and their metadata
  • Optionally scrobble to source Jellyfin server for server-side statistics
  • Introduced UI components for managing Jellyfin servers in the settings view
  • Bumps Node version to v24
  • Fixes song hashing for remote servers by recomputing the hash after data is fetched and using a different hashing method, so it won't depend on volatile data

Signed-off-by: Niko Huuskonen niko.huuskonen.00@gmail.com

- Implemented Jellyfin media source functionality, allowing users to connect to Jellyfin servers for music streaming
- Added localization strings for Jellyfin settings in multiple languages
- Created JellyfinMediaSource class to handle authentication, media fetching, and syncing
- Updated MediaSourceManager to support adding and managing Jellyfin sources
- Enhanced player and track logic to accommodate Jellyfin tracks and their metadata
- Introduced UI components for managing Jellyfin servers in the settings view

Signed-off-by: Niko Huuskonen <niko.huuskonen.00@gmail.com>
@N1kO23
N1kO23 requested a review from Geoxor August 26, 2026 23:17
Signed-off-by: Niko Huuskonen <niko.huuskonen.00@gmail.com>
Signed-off-by: Niko Huuskonen <niko.huuskonen.00@gmail.com>
N1kO23 added 7 commits August 27, 2026 03:20
Signed-off-by: Niko Huuskonen <niko.huuskonen.00@gmail.com>
- Client now verifies cached session and uses that if possible to avoid unnecessary reauth
- Moved audio metadata storing from localStorage to metadata files like on local files to have an unified design as well as to avoid localStorage space constraints
- Client startup performs only incremental sync with the help of timestamping, sync button performs full library sync
- Sync upserts tracks instead of removing everything and reinserting, tracks persists thru app relaunch

Signed-off-by: Niko Huuskonen <niko.huuskonen.00@gmail.com>
… populated

- This fixes a bug in jellyfin source, where the tracks would share same hash as the path was not yet computed properly and thus skewing analytics
- Also both jellyfin and subsonic had either access token or password embedded in the path and thus made the hash persistency flaky, so their hashing was altered

Signed-off-by: Niko Huuskonen <niko.huuskonen.00@gmail.com>
Fixes regression from previous hashing update: Populating track data before hashing prevents server data, such as isFavourited from making it to the track info, running hashing right after obtaining the id prevents this as that satisfies the algorithm needs but doesn't override any of the data

Signed-off-by: Niko Huuskonen <niko.huuskonen.00@gmail.com>
Adds a toggle for jellyfin media source to report playback status back to the server

Signed-off-by: Niko Huuskonen <niko.huuskonen.00@gmail.com>
Signed-off-by: Niko Huuskonen <niko.huuskonen.00@gmail.com>
This adds support for bit depth as well as sample rate fetching

Signed-off-by: Niko Huuskonen <niko.huuskonen.00@gmail.com>
@Geoxor Geoxor added this to the Feature Complete milestone Aug 27, 2026
@Geoxor
Geoxor merged commit 6f96979 into master Aug 27, 2026
37 checks passed
@N1kO23
N1kO23 deleted the add-jellyfin branch August 27, 2026 18:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants