Skip to content

Feature/jellyfin server support#36

Merged
RayZ3R0 merged 14 commits intoRayZ3R0:mainfrom
Oduanir:feature/jellyfin-server-support
Jan 1, 2026
Merged

Feature/jellyfin server support#36
RayZ3R0 merged 14 commits intoRayZ3R0:mainfrom
Oduanir:feature/jellyfin-server-support

Conversation

@Oduanir
Copy link
Copy Markdown
Contributor

@Oduanir Oduanir commented Dec 29, 2025

Description
This PR enhances the existing media workflow by introducing advanced integration with Jellyfin API for metadata management and a fully automated system for User-Centric ListenBrainz playlists.

While basic playlist support (via .m3u8 files) was already present, this update focuses on the missing pieces: robust cover art synchronization and multi-user automation.

New Features

  1. Jellyfin API Integration (for Covers)
    Cover Art Synchronization: Previously, playlists were just file lists. Now, Tidaloader actively communicates with the Jellyfin API to upload the correct Cover Art for each playlist (sourced from Tidal).
    Library Indexing: Implemented a forced refresh_library trigger to ensure Jellyfin detects new playlists immediately, allowing the cover to be attached without delay.
  2. Automated ListenBrainz Sync per User
    User-Centric Automation: Instead of manually fetching tracks, the system now scans Jellyfin users (linked to ListenBrainz) and automatically creates/updates their personal playlists (e.g., "Weekly Jams", "Year in Music").
    Recommendation Loop: By leveraging user listening history (via the Jellyfin ListenBrainz plugin), Tidaloader closes the loop: Jellyfin Plays -> ListenBrainz Stats -> Tidaloader Download -> Jellyfin Playlist.
  3. Dynamic Cover Art Engine
    Custom Generator: Since ListenBrainz playlists don't have native covers like Tidal, a new engine generates unique artwork on the fly.
    Smart Visuals: Features a premium layout with the Playlist Title and User Name, using dynamic font scaling and text wrapping for a polished look in the Jellyfin interface.
  4. Improvements & Cleanup
    M3U8 Metadata: Added # Source: [source_type] leaders to generated playlist files for better tracking.
    UI Governance: The Frontend now filters lists to separate "Tidal Playlists" from "Automated/ListenBrainz Playlists", keeping the interface clean.

- Added JellyfinClient for user/playlist management and image proxying
- Updated System router to expose Jellyfin users and their avatars
- Refactored WeeklyJamsGenerator to use real user data and enhanced UI
  - Added full quality selector matching global settings
  - Added user avatars with fallback
- Added support for fetching playlist covers from Tidal and syncing to Jellyfin
- Cleaned up debug logging and refactored connection logic
@RayZ3R0
Copy link
Copy Markdown
Owner

RayZ3R0 commented Jan 1, 2026

That is an amazing PR, thanks a lot! Will need to test a bit and resolve the conflict after my recent changes then I'll add it in.

RayZ3R0 added a commit that referenced this pull request Jan 1, 2026
- Integrated Jellyfin server support with cover art sync
- Added automated ListenBrainz sync per Jellyfin user
- Dynamic cover art generator for playlists
- Enhanced M3U8 with source metadata headers
- Resolved conflict: Added MusicBrainz toggle to new Settings UI
- Removed Group Compilations feature
- Updated Settings UI to card-based layout with manual save
- Separated release notes: 1.2.7 (MusicBrainz) and 1.3.0 (Jellyfin)
@RayZ3R0 RayZ3R0 merged commit 19cb683 into RayZ3R0:main Jan 1, 2026
2 checks passed
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.

2 participants