/
/
/
1"""Metadata-related functions for BBC Sounds provider."""
2
3from music_assistant_models.streamdetails import StreamMetadata
4from sounds import Segment
5
6from .constants import _Constants
7
8
9def _find_segment(segments: list[Segment], elapsed_time: int) -> Segment | None:
10 segment = None
11 if segments:
12 segment = next(
13 (
14 s
15 for s in segments
16 if isinstance(s, Segment)
17 and s.offset is not None
18 and (start := s.offset.get("start")) is not None
19 and (end := s.offset.get("end")) is not None
20 and int(start) <= elapsed_time < int(end)
21 ),
22 None,
23 )
24 return segment
25
26
27def _segment_to_metadata(now_playing: Segment) -> StreamMetadata | None:
28 """Convert a now-playing segment to StreamMetadata."""
29 if isinstance(now_playing, Segment):
30 title = now_playing.titles.get("secondary", "")
31 artist = now_playing.titles.get("primary", "")
32 image_url = now_playing.image_url
33 if image_url and _Constants.BLANK_IMAGE_NAME in image_url:
34 image_url = None
35 return StreamMetadata(title=title, artist=artist, image_url=image_url)
36 return None
37