Plex Integration + Music Source Integration Improvements (#37)

* plex integration

* The big one - Full Music Source page rework + Playlist importing + Full Plex Integration + Discovery Options + More Like This/Surprise Me/Instant Mix + More...

* Music source track page - Play all / shuffle fixes

* lint

* format

* fix type checks

* format
This commit is contained in:
Harvey
2026-04-13 23:39:01 +01:00
committed by GitHub
parent 90b7b67a10
commit 0f25ebc26d
177 changed files with 21156 additions and 769 deletions
+25 -3
View File
@@ -35,6 +35,7 @@ from .repo_providers import (
get_listenbrainz_repository,
get_jellyfin_repository,
get_navidrome_repository,
get_plex_repository,
get_coverart_repository,
get_youtube_repo,
get_audiodb_image_service,
@@ -138,7 +139,6 @@ def make_processor(lidarr_repo, memory_cache, disk_cache, cover_repo, request_hi
if payload and isinstance(payload, dict):
is_monitored = payload.get("monitored", False)
# Prefer the explicit monitored flag before falling back to the top-level result.
if not is_monitored:
is_monitored = bool(result.get("monitored"))
@@ -568,7 +568,8 @@ def get_jellyfin_playback_service() -> "JellyfinPlaybackService":
from services.jellyfin_playback_service import JellyfinPlaybackService
jellyfin_repo = get_jellyfin_repository()
return JellyfinPlaybackService(jellyfin_repo)
cache = get_cache()
return JellyfinPlaybackService(jellyfin_repo, cache)
@singleton
@@ -606,4 +607,25 @@ def get_navidrome_playback_service() -> "NavidromePlaybackService":
from services.navidrome_playback_service import NavidromePlaybackService
navidrome_repo = get_navidrome_repository()
return NavidromePlaybackService(navidrome_repo)
cache = get_cache()
return NavidromePlaybackService(navidrome_repo, cache)
@singleton
def get_plex_library_service() -> "PlexLibraryService":
from services.plex_library_service import PlexLibraryService
plex_repo = get_plex_repository()
preferences_service = get_preferences_service()
library_db = get_library_db()
mbid_store = get_mbid_store()
return PlexLibraryService(plex_repo, preferences_service, library_db, mbid_store)
@singleton
def get_plex_playback_service() -> "PlexPlaybackService":
from services.plex_playback_service import PlexPlaybackService
plex_repo = get_plex_repository()
cache = get_cache()
return PlexPlaybackService(plex_repo, cache)