sounds.models

Attributes

SoundsTypes

Classes

SerializableMixin

IdentifiableMixin

ImageMixin

BaseObject

Base class for all objects with common functionality.

Network

Represents a network/brand with basic metadata.

Container

Base container for organizing content - not directly playable.

ImageContainer

Base container for organizing content - not directly playable.

PlayableItem

Base class for actual playable content.

TimedContent

Mixin for content with timing information.

Broadcast

Represents a broadcast item.

ScheduleItem

Represents a scheduled program item.

Station

Represents a radio/media station.

StationSearchResult

Represents a search result showing a station. Keys are different enough to warrant a separate model

LiveProgramme

Base class for actual playable content.

LiveStation

Base class for actual playable content.

Stream

Represents a station stream.

Segment

Represents a segment within a stream.

Schedule

Represents a schedule for a given date.

RadioShow

Represents a playable radio show.

RadioClip

Represents a playable radio clip.

PodcastEpisode

Represents a playable podcast episode.

Podcast

Represents a podcast container (holds episodes).

RadioSeries

Represents a radio series container (holds episodes).

Collection

Represents a collection container.

Category

Represents a content category.

CategoryItemContainer

Represents a content category container.

Playlist

Represents a playlist container.

CollectionItemContainer

Represents a content collection container.

MenuItem

Represents a menu item container.

RecommendedMenuItem

Represents a recommended menu item.

Menu

Represents a menu container with items.

DisplayItem

Base container for organizing content - not directly playable.

PromoItem

Base container for organizing content - not directly playable.

SearchResults

Header

Base class for all objects with common functionality.

Functions

model_factory(object)

Module Contents

type sounds.models.SoundsTypes = models.Category | models.CategoryItemContainer | models.Container | models.Collection | models.LiveStation | models.MenuItem | models.Podcast | models.PodcastEpisode | models.RadioClip | models.RadioSeries | models.RadioShow | models.RecommendedMenuItem | models.Segment | models.Schedule | models.ScheduleItem | models.Station | models.StationSearchResult
class sounds.models.SerializableMixin
to_dict()
classmethod from_dict(data: dict[str, Any]) Segment
class sounds.models.IdentifiableMixin
urn: str | None
property item_id
class sounds.models.ImageMixin
IMAGE_SIZE = 1280
process_image()
class sounds.models.BaseObject

Bases: SerializableMixin

Base class for all objects with common functionality.

type: str | None = None
uris: dict
recommendation: dict | None = None
class sounds.models.Network

Bases: SerializableMixin

Represents a network/brand with basic metadata.

id: str
key: str | None = None
short_title: str | None = None
logo_url: str | None = None
current_programme: LiveProgramme | None = None
sort: int | None = None
group: str | None = None
contacts: dict | None = None
services: dict | None = None
promoted_category_summaries: dict | None = None
active: bool | None = None
international: bool | None = None
class sounds.models.Container

Bases: BaseObject, IdentifiableMixin

Base container for organizing content - not directly playable.

id: str
title: str | None = None
description: str | None = None
image_url: str | None = None
synopses: dict
titles: dict
urn: str | None = None
network: Network | None = None
sub_items: List[SoundsTypes] | None = None
class sounds.models.ImageContainer

Bases: Container

Base container for organizing content - not directly playable.

IMAGE_SIZE = 1280
class sounds.models.PlayableItem

Bases: BaseObject, IdentifiableMixin

Base class for actual playable content.

id: str
urn: str | None = None
pid: str | None = None
type: str | None = None
duration: dict | None = None
progress: dict | None = None
image_url: str | None = None
titles: dict
synopses: dict
network: Network | None = None
container: Container | None = None
start: datetime.datetime | None = None
end: datetime.datetime | None = None
release: dict | None = None
availability: dict | None = None
stream: str | None = None
is_live(timezone: zoneinfo.ZoneInfo | pytz.tzinfo.BaseTzInfo) bool
has_already_aired(timezone: zoneinfo.ZoneInfo | pytz.tzinfo.BaseTzInfo) bool
class sounds.models.TimedContent

Mixin for content with timing information.

is_live(timezone: zoneinfo.ZoneInfo | pytz.tzinfo.BaseTzInfo) bool
has_already_aired(timezone: zoneinfo.ZoneInfo | pytz.tzinfo.BaseTzInfo) bool
class sounds.models.Broadcast

Represents a broadcast item.

type: str
pid: str
start: datetime.datetime
end: datetime.datetime
service_id: str
duration: int
progress: int
live: bool
blanked: bool
repeat: bool
critical: bool
on_air: bool
programme: RadioShow
class sounds.models.ScheduleItem

Bases: ImageMixin, PlayableItem

Represents a scheduled program item.

class sounds.models.Station

Bases: Container

Represents a radio/media station.

local: bool = False
stream: Stream | None = None
schedule: Schedule | None = None
class sounds.models.StationSearchResult

Bases: SerializableMixin, IdentifiableMixin

Represents a search result showing a station. Keys are different enough to warrant a separate model

id: str
type: str
urn: str
service_id: str
episode_image_url: str | None
station_image_url: str | None
station_name: str
title: str
short_synopsis: str
progress: dict[int, str]
duration: dict[int, str]
class sounds.models.LiveProgramme

Bases: PlayableItem, ImageMixin

Base class for actual playable content.

class sounds.models.LiveStation

Bases: PlayableItem, IdentifiableMixin, ImageMixin

Base class for actual playable content.

local: bool = False
schedule: Schedule | None = None
class sounds.models.Stream

Bases: TimedContent, SerializableMixin, ImageMixin

Represents a station stream.

id: str
uri: str
image_url: str | None
show_title: str
show_description: str
container: Any | None = None
property can_seek: bool

Indicates if the stream supports seeking.

class sounds.models.Segment

Bases: SerializableMixin, ImageMixin

Represents a segment within a stream.

id: str
segment_type: str
titles: dict
image_url: str | None
offset: dict
uris: list[dict[str, str]]
property spotify_url
class sounds.models.Schedule

Bases: Container

Represents a schedule for a given date.

id: str
sub_items: List[ScheduleItem] | None
get_current_item(timezone: zoneinfo.ZoneInfo | pytz.tzinfo.BaseTzInfo = pytz.timezone('UTC')) ScheduleItem | None

Get the currently airing schedule item.

class sounds.models.RadioShow

Bases: PlayableItem, TimedContent, ImageMixin, IdentifiableMixin

Represents a playable radio show.

property item_id
class sounds.models.RadioClip

Bases: PlayableItem, TimedContent, ImageMixin, IdentifiableMixin

Represents a playable radio clip.

class sounds.models.PodcastEpisode

Bases: PlayableItem, ImageMixin, IdentifiableMixin

Represents a playable podcast episode.

class sounds.models.Podcast

Bases: ImageContainer

Represents a podcast container (holds episodes).

class sounds.models.RadioSeries

Bases: ImageContainer

Represents a radio series container (holds episodes).

class sounds.models.Collection

Bases: ImageContainer

Represents a collection container.

class sounds.models.Category

Bases: ImageContainer

Represents a content category.

class sounds.models.CategoryItemContainer

Bases: SerializableMixin

Represents a content category container.

id: str | None = None
total: int
limit: int
offset: int
sub_items: List[SoundsTypes] | None = None
class sounds.models.Playlist

Bases: ImageContainer

Represents a playlist container.

class sounds.models.CollectionItemContainer

Bases: CategoryItemContainer

Represents a content collection container.

class sounds.models.MenuItem

Bases: ImageContainer

Represents a menu item container.

get(key: str) CategoryItemContainer | Container | LiveStation | PodcastEpisode | RadioClip | RadioShow | Segment | ScheduleItem | StationSearchResult | None

Get a sub-menu item by ID.

class sounds.models.RecommendedMenuItem

Bases: MenuItem

Represents a recommended menu item.

class sounds.models.Menu

Bases: SerializableMixin

Represents a menu container with items.

sub_items: List[MenuItem] | Sequence[MenuItem] | None
get(key: str) MenuItem | RecommendedMenuItem | None

Get a menu item by ID.

class sounds.models.DisplayItem

Bases: Container

Base container for organizing content - not directly playable.

item: PlayableItem | None = None
class sounds.models.PromoItem

Bases: Container

Base container for organizing content - not directly playable.

item: PlayableItem
class sounds.models.SearchResults

Bases: SerializableMixin

stations: List[LiveStation | StationSearchResult]
shows: List[Podcast | RadioShow]
episodes: List[PodcastEpisode | RadioClip | RadioShow]
class sounds.models.Header

Bases: BaseObject

Base class for all objects with common functionality.

sounds.models.model_factory(object)