Fix some items (podcasts, radio, playlists) not showing up in library
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 18 Dec 2025 00:51:54 +0000 (01:51 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 18 Dec 2025 00:51:54 +0000 (01:51 +0100)
music_assistant/controllers/media/albums.py
music_assistant/controllers/media/artists.py
music_assistant/controllers/media/audiobooks.py
music_assistant/controllers/media/base.py
music_assistant/controllers/media/podcasts.py
music_assistant/controllers/media/tracks.py
music_assistant/controllers/music.py

index 718fbd48b50ea4bd102504bb96e62f12462d5e3b..a7a4f785f0e58e63d7e2c300971fbe9b6b87efb7 100644 (file)
@@ -170,7 +170,6 @@ class AlbumsController(MediaControllerBase[Album]):
             extra_query_parts=extra_query_parts,
             extra_query_params=extra_query_params,
             extra_join_parts=extra_join_parts,
-            in_library_only=True,
         )
 
         # Calculate how many more items we need to reach the original limit
index e1d0d21652513a0a5cf850a9033d720aa3ad7ccb..d9acdd9ee80798030c6650b81443624e10b5efab 100644 (file)
@@ -103,7 +103,6 @@ class ArtistsController(MediaControllerBase[Artist]):
             provider_filter=self._ensure_provider_filter(provider),
             extra_query_parts=extra_query_parts,
             extra_query_params=extra_query_params,
-            in_library_only=True,
         )
 
     async def tracks(
index b21df2552067f812f1bc5bf9382782009de47ac4..54d37657dab05b2c874e4266e947ae10c34cc184 100644 (file)
@@ -92,7 +92,6 @@ class AudiobooksController(MediaControllerBase[Audiobook]):
             provider_filter=self._ensure_provider_filter(provider),
             extra_query_parts=extra_query_parts,
             extra_query_params=extra_query_params,
-            in_library_only=True,
         )
         if search and len(result) < 25 and not offset:
             # append author items to result
@@ -108,7 +107,6 @@ class AudiobooksController(MediaControllerBase[Audiobook]):
                 provider_filter=self._ensure_provider_filter(provider),
                 extra_query_parts=extra_query_parts,
                 extra_query_params=extra_query_params,
-                in_library_only=True,
             )
         return result
 
index 611ad9bd4b664dc28fb4f99c715512dc0e78aafb..c5abb11b7c04d2b9ff3cee469a3381fac4dfabd9 100644 (file)
@@ -257,7 +257,6 @@ class MediaControllerBase[ItemCls: "MediaItemType"](metaclass=ABCMeta):
             provider_filter=self._ensure_provider_filter(provider),
             extra_query_parts=[extra_query] if extra_query else None,
             extra_query_params=extra_query_params,
-            in_library_only=True,
         )
 
     async def iter_library_items(
@@ -763,7 +762,6 @@ class MediaControllerBase[ItemCls: "MediaItemType"](metaclass=ABCMeta):
         extra_query_parts: list[str] | None = None,
         extra_query_params: dict[str, Any] | None = None,
         extra_join_parts: list[str] | None = None,
-        in_library_only: bool = False,
     ) -> list[ItemCls]:
         """Fetch MediaItem records from database by building the query."""
         query_params = extra_query_params or {}
@@ -779,7 +777,6 @@ class MediaControllerBase[ItemCls: "MediaItemType"](metaclass=ABCMeta):
                 favorite=favorite,
                 search=search,
                 provider_filter=provider_filter,
-                in_library_only=in_library_only,
                 limit=limit,
             )
         else:
@@ -791,7 +788,6 @@ class MediaControllerBase[ItemCls: "MediaItemType"](metaclass=ABCMeta):
                 favorite=favorite,
                 search=search,
                 provider_filter=provider_filter,
-                in_library_only=in_library_only,
             )
         # build and execute final query
         sql_query = self._build_final_query(query_parts, join_parts, order_by)
@@ -826,7 +822,6 @@ class MediaControllerBase[ItemCls: "MediaItemType"](metaclass=ABCMeta):
         favorite: bool | None,
         search: str | None,
         provider_filter: list[str] | None,
-        in_library_only: bool,
         limit: int,
     ) -> None:
         """Build a fast random subquery with all filters applied."""
@@ -841,7 +836,6 @@ class MediaControllerBase[ItemCls: "MediaItemType"](metaclass=ABCMeta):
             favorite=favorite,
             search=search,
             provider_filter=provider_filter,
-            in_library_only=in_library_only,
         )
 
         # Build the subquery
@@ -870,7 +864,6 @@ class MediaControllerBase[ItemCls: "MediaItemType"](metaclass=ABCMeta):
         favorite: bool | None,
         search: str | None,
         provider_filter: list[str] | None,
-        in_library_only: bool,
     ) -> None:
         """Apply search, favorite, and provider filters."""
         # handle search
@@ -888,15 +881,9 @@ class MediaControllerBase[ItemCls: "MediaItemType"](metaclass=ABCMeta):
             join_parts.append(
                 f"JOIN provider_mappings ON provider_mappings.item_id = {self.db_table}.item_id "
                 f"AND provider_mappings.media_type = '{self.media_type.value}' "
-                f"AND provider_mappings.in_library = {in_library_only} "
+                f"AND provider_mappings.in_library = 1 "
                 f"AND ({' OR '.join(provider_conditions)})"
             )
-        elif in_library_only:
-            join_parts.append(
-                f"JOIN provider_mappings ON provider_mappings.item_id = {self.db_table}.item_id "
-                f"AND provider_mappings.media_type = '{self.media_type.value}' "
-                f"AND provider_mappings.in_library = {in_library_only} "
-            )
 
     @final
     def _build_final_query(
index 6fa8122c1079a02c0db411e034a64e95a468d82f..7530b95894176e92a4ec12f0bfd94154a52804b7 100644 (file)
@@ -75,7 +75,6 @@ class PodcastsController(MediaControllerBase[Podcast]):
             provider_filter=self._ensure_provider_filter(provider),
             extra_query_parts=extra_query_parts,
             extra_query_params=extra_query_params,
-            in_library_only=True,
         )
         if search and len(result) < 25 and not offset:
             # append publisher items to result
@@ -91,7 +90,6 @@ class PodcastsController(MediaControllerBase[Podcast]):
                 provider_filter=self._ensure_provider_filter(provider),
                 extra_query_parts=extra_query_parts,
                 extra_query_params=extra_query_params,
-                in_library_only=True,
             )
         return result
 
index 4e8daf50e3cbccab4c8e2d5b86d455e3ef325294..7a9e555f5eed01924d7a0764641ae084b7bd989f 100644 (file)
@@ -207,7 +207,6 @@ class TracksController(MediaControllerBase[Track]):
             extra_query_parts=extra_query_parts,
             extra_query_params=extra_query_params,
             extra_join_parts=extra_join_parts,
-            in_library_only=True,
         )
         if search and len(result) < 25 and not offset:
             # append artist items to result
@@ -228,7 +227,6 @@ class TracksController(MediaControllerBase[Track]):
                 extra_query_parts=extra_query_parts,
                 extra_query_params=extra_query_params,
                 extra_join_parts=extra_join_parts,
-                in_library_only=True,
             ):
                 # prevent duplicates (when artist is also in the title)
                 if _track.uri not in existing_uris:
index 10e1d0e0fc605178fef0b951cab1a12aa3d3de3f..d5c186019c20575144824c6fadef132193fe811e 100644 (file)
@@ -2173,7 +2173,8 @@ class MusicController(CoreController):
             await self._database.execute(
                 f"UPDATE {DB_TABLE_PROVIDER_MAPPINGS} SET in_library = 1 "
                 "WHERE provider_domain IN "
-                "('filesystem_local', 'filesystem_smb', 'plex', 'jellyfin', 'opensubsonic', 'builtin');"  # noqa: E501
+                "('filesystem_local', 'filesystem_smb', 'plex', "
+                "'jellyfin', 'opensubsonic', 'builtin');"
             )
 
         # save changes