HTTP = "http" # regular http stream
ENCRYPTED_HTTP = "encrypted_http" # encrypted http stream
HLS = "hls" # http HLS stream
- ENCRYPTED_HLS = "encrypted_hls" # encrypted HLS stream
ICY = "icy" # http stream with icy metadata
LOCAL_FILE = "local_file"
CUSTOM = "custom"
)
elif streamdetails.stream_type == StreamType.ICY:
audio_source = get_icy_radio_stream(self.mass, streamdetails.path, streamdetails)
- elif streamdetails.stream_type in (StreamType.HLS, StreamType.ENCRYPTED_HLS):
+ elif streamdetails.stream_type == StreamType.HLS:
substream = await get_hls_substream(self.mass, streamdetails.path)
audio_source = substream.path
if streamdetails.media_type == MediaType.RADIO:
# unfold first url of playlist
return await resolve_radio_stream(mass, line.path)
raise InvalidDataError("No content found in playlist")
- except IsHLSPlaylist as err:
- stream_type = StreamType.ENCRYPTED_HLS if err.encrypted else StreamType.HLS
+ except IsHLSPlaylist:
+ stream_type = StreamType.HLS
except Exception as err:
LOGGER.warning("Error while parsing radio URL %s: %s", url, err)
class IsHLSPlaylist(InvalidDataError):
"""The playlist from an HLS stream and should not be parsed."""
- encrypted: bool = False
-
@dataclass
class PlaylistItem:
raise InvalidDataError(msg) from err
if raise_on_hls and "#EXT-X-VERSION:" in playlist_data or "#EXT-X-STREAM-INF:" in playlist_data:
- exc = IsHLSPlaylist()
- exc.encrypted = "#EXT-X-KEY:" in playlist_data
- raise exc
+ raise IsHLSPlaylist
if url.endswith((".m3u", ".m3u8")):
playlist = parse_m3u(playlist_data)
audio_format=AudioFormat(
content_type=ContentType.AAC,
),
- stream_type=StreamType.ENCRYPTED_HLS,
+ stream_type=StreamType.HLS,
media_type=MediaType.RADIO,
path=hls_path,
can_seek=False,