sounds.models

Attributes

SoundsTypes

Classes

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.

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.

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

Functions

model_factory(object)

Module Contents

type sounds.models.SoundsTypes = models.Broadcast | models.Category | models.CategoryItemContainer | models.Container | models.Collection | models.LiveStation | models.MenuItem | models.Network | 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.BaseObject

Base class for all objects with common functionality.

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

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

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 | None = None
titles: dict | None = None
urn: str | None = None
network: Network | None = None
sub_items: List[SoundsTypes] | None = None
property item_id
class sounds.models.PlayableItem

Bases: BaseObject

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 | None = None
synopses: dict | None = None
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
property item_id
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: PlayableItem

Represents a scheduled program item.

container: Container | 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.Station

Bases: Container

Represents a radio/media station.

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

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]
property item_id
class sounds.models.LiveProgramme

Bases: PlayableItem

Base class for actual playable content.

class sounds.models.LiveStation

Bases: PlayableItem

Base class for actual playable content.

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

Bases: TimedContent

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

Represents a segment within a stream.

id: str
segment_type: str
titles: dict
image_url: str | None
offset: dict
class sounds.models.Schedule

Bases: Container

Represents a schedule for a given date.

id: str
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

Represents a playable radio show.

property item_id
class sounds.models.RadioClip

Bases: PlayableItem, TimedContent

Represents a playable radio clip.

class sounds.models.PodcastEpisode

Bases: PlayableItem

Represents a playable podcast episode.

class sounds.models.Podcast

Bases: Container

Represents a podcast container (holds episodes).

class sounds.models.RadioSeries

Bases: Podcast

Represents a radio series container (holds episodes).

class sounds.models.Collection

Bases: Container

Represents a collection container.

class sounds.models.Category

Bases: Container

Represents a content category.

class sounds.models.CategoryItemContainer

Represents a content category container.

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

Bases: CategoryItemContainer

Represents a content collection container.

class sounds.models.MenuItem

Bases: Container

Represents a menu item container.

class sounds.models.RecommendedMenuItem

Bases: MenuItem

Represents a recommended menu item.

class sounds.models.Menu

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
stations: List[LiveStation | StationSearchResult]
shows: List[Podcast | RadioShow]
episodes: List[PodcastEpisode | RadioClip | RadioShow]
sounds.models.model_factory(object)