Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions music_assistant/controllers/media/radio.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from __future__ import annotations

import asyncio
from typing import TYPE_CHECKING

from music_assistant_models.enums import MediaType
from music_assistant_models.media_items import Radio, Track
Expand All @@ -13,6 +14,9 @@

from .base import MediaControllerBase

if TYPE_CHECKING:
from music_assistant import MusicAssistant


class RadioController(MediaControllerBase[Radio]):
"""Controller managing MediaItems of type Radio."""
Expand All @@ -21,9 +25,9 @@ class RadioController(MediaControllerBase[Radio]):
media_type = MediaType.RADIO
item_cls = Radio

def __init__(self, *args, **kwargs) -> None:
def __init__(self, mass: MusicAssistant) -> None:
"""Initialize class."""
super().__init__(*args, **kwargs)
super().__init__(mass)
# register (extra) api handlers
api_base = self.api_base
self.mass.register_api_command(f"music/{api_base}/radio_versions", self.versions)
Expand Down Expand Up @@ -52,10 +56,11 @@ async def versions(
all_versions.pop(prov_version.item_id, None)

# return the aggregated result
return all_versions.values()
return list(all_versions.values())

async def _add_library_item(self, item: Radio) -> int:
async def _add_library_item(self, item: Radio, overwrite_existing: bool = False) -> int:
"""Add a new item record to the database."""
assert self.mass.music.database is not None
db_id = await self.mass.music.database.insert(
self.db_table,
{
Expand All @@ -65,7 +70,9 @@ async def _add_library_item(self, item: Radio) -> int:
"metadata": serialize_to_json(item.metadata),
"external_ids": serialize_to_json(item.external_ids),
"search_name": create_safe_string(item.name, True, True),
"search_sort_name": create_safe_string(item.sort_name, True, True),
"search_sort_name": create_safe_string(
item.sort_name if item.sort_name is not None else "", True, True
),
},
)
# update/set provider_mappings table
Expand All @@ -84,6 +91,7 @@ async def _update_library_item(
match = {"item_id": db_id}
name = update.name if overwrite else cur_item.name
sort_name = update.sort_name if overwrite else cur_item.sort_name or update.sort_name
assert self.mass.music.database is not None
await self.mass.music.database.update(
self.db_table,
match,
Expand All @@ -96,7 +104,7 @@ async def _update_library_item(
update.external_ids if overwrite else cur_item.external_ids
),
"search_name": create_safe_string(name, True, True),
"search_sort_name": create_safe_string(sort_name, True, True),
"search_sort_name": create_safe_string(sort_name or "", True, True),
},
)
# update/set provider_mappings table
Expand Down
8 changes: 7 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,13 @@ enable_error_code = [
exclude = [
'^music_assistant/controllers/cache.py$',
'^music_assistant/controllers/config.py$',
'^music_assistant/controllers/media/.*$',
'^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/playlists.py*$',
'^music_assistant/controllers/media/podcasts.py*$',
'^music_assistant/controllers/media/tracks.py*$',
'^music_assistant/controllers/music.py$',
'^music_assistant/controllers/player_queues.py$',
'^music_assistant/controllers/streams.py$',
Expand Down