diff --git a/kodinerds_iptv/check_availability.py b/kodinerds_iptv/check_availability.py index 69b06e2c..07aa166b 100644 --- a/kodinerds_iptv/check_availability.py +++ b/kodinerds_iptv/check_availability.py @@ -1,154 +1,108 @@ """TODO.""" -import asyncio -from collections import defaultdict -from collections.abc import Coroutine -from http import HTTPStatus -from itertools import chain +import functools +from collections.abc import Sequence from pathlib import Path -from typing import Any, Protocol +from ssl import SSLError -from httpx import AsyncClient, AsyncHTTPTransport, Response +import aiometer +from httpx import URL, AsyncClient, AsyncHTTPTransport, Response, TransportError +from loguru import logger from tabulate import tabulate -from .enums import ReportFormat, StreamState -from .io_utils import read_streams -from .stream import Stream, StreamCategory, StreamCheck - - -class ReportOutput(Protocol): - """TODO.""" - - def write_header(self, state: StreamState) -> str: - """TODO.""" - ... - - def write_table(self, stream_checks: list[StreamCheck]) -> str: - """TODO.""" - ... - - -def check_sources( - sources: list[Path], - output_dir: Path, - timeout: int, - retries: int, - report_format: ReportFormat, -) -> None: - """TODO.""" - asyncio.run( - check_availability(sources, output_dir, timeout, retries, report_format) - ) +from .enums import StreamState +from .stream import Stream, StreamCheck async def check_availability( - sources: list[Path], + streams: Sequence[Stream], report_dir: Path, + *, timeout: int, - retries: int, - report_format: ReportFormat, + max_retries: int, + max_parallel: int, ) -> None: """TODO.""" - source_content: dict[str, list[StreamCategory]] = {} - for source in sources: - print(f"Reading source: {source}") - source_content[source.stem] = read_streams(source) + transport = AsyncHTTPTransport(retries=max_retries) + client = AsyncClient(transport=transport, follow_redirects=True, timeout=timeout) + params = functools.partial(__check_stream, client) - transport = AsyncHTTPTransport(retries=retries) - results: dict[str, list[StreamCheck]] = {} + async with aiometer.amap(params, streams, max_at_once=max_parallel) as results: + stream_checks = [ + __stream_check_response(stream, response) + async for stream, response in results + ] - async with AsyncClient(transport=transport) as client: - for source_name, stream_groups in source_content.items(): - print(f"Checking streams from source '{source_name}'") + __write_results(stream_checks, report_dir / "report.txt") - streams = list(chain.from_iterable(sg.streams for sg in stream_groups)) - tasks = [await check(stream, client, timeout) for stream in streams] - gather_results = await asyncio.gather(*tasks, return_exceptions=True) - results[source_name] = [ - match_stream_check_response(*stream_result) - for stream_result in zip(streams, gather_results, strict=True) - ] +async def __check_stream( + client: AsyncClient, stream: Stream +) -> tuple[Stream, Response | Exception | None]: + logger.debug(f"Checking stream: {stream.name}") + # TODO: Enable caching for already checked stream URLs. - file_extension = "md" if report_format == ReportFormat.MARKDOWN else "txt" - for source_name, stream_checks in results.items(): - report_file = report_dir / f"{source_name}.{file_extension}" - write_results(stream_checks, report_file) + if stream.skip_check: + return stream, None - print("Finished") + try: + return stream, await client.send(client.build_request("HEAD", stream.url)) + except (TransportError, SSLError) as e: + return stream, e -def match_stream_check_response( +def __stream_check_response( stream: Stream, response: Response | Exception | None ) -> StreamCheck: - """TODO.""" - match response: - case None: - return StreamCheck(stream, StreamState.SKIPPED) - - case Exception() as e: - return StreamCheck(stream, StreamState.ERROR, reason=str(e)) - - case _: - # TODO: Check for redirects. - # TODO: Match against more status codes explicitly. - status = response.status_code - check = ( - StreamCheck(stream, StreamState.SUCCESS) - if status == HTTPStatus.OK - else StreamCheck(stream, StreamState.ERROR, reason=f"HTTP: {status}") - ) - - if check.state == StreamState.SUCCESS and stream.url.startswith("http://"): - # Stream URL is HTTP, but it works. - check.state = StreamState.WARNING - check.reason = "Try using https:// instead of http://" - - return check - - -async def check( - stream: Stream, client: AsyncClient, timeout: int -) -> Coroutine[Any, Any, Response | None]: - """TODO.""" - return noop() if stream.skip_check else client.head(stream.url, timeout=timeout) + if response is None: + # Happens if 'stream.skip_check' is True, therefore no response. + return StreamCheck(stream, StreamState.SKIPPED) + if isinstance(response, Exception): + return StreamCheck(stream, StreamState.ERROR, reason=str(response)) -async def noop() -> None: - """No-op function.""" + if response.is_error: + return StreamCheck( + stream, StreamState.ERROR, reason=f"HTTP status: {response.status_code}" + ) + if response.is_redirect: + return StreamCheck( + stream, StreamState.WARNING, reason="Redirected to: {response.url}" + ) -def write_results(results: list[StreamCheck], output_file: Path) -> None: - """TODO.""" - print(f"Writing file: {output_file}") - sorted_results: defaultdict[StreamState, list[StreamCheck]] = defaultdict(list) - for result in results: - sorted_results[result.state].append(result) - - final_result: str = "\n\n".join( - f"{'='*29} Results for: {state} {'='*29}\n{result_lines(sorted_results[state])}" - for state in StreamState + if response.is_success and URL(stream.url).scheme == "http": + return StreamCheck( + stream, StreamState.WARNING, reason="Using HTTP instead of HTTPS" + ) + + if response.is_success: + return StreamCheck(stream, StreamState.SUCCESS) + + # All other cases, including HTTP 1xx status codes. + return StreamCheck( + stream, + StreamState.UNKNOWN, + reason=f"Unknown (HTTP status: {response.status_code})", ) + +def __write_results(results: Sequence[StreamCheck], output_file: Path) -> None: + logger.info(f"Writing report file: {output_file}") + output_file.parent.mkdir(parents=True, exist_ok=True) - output_file.write_text(final_result) + output_file.write_text(__generate_result_lines(sorted(results))) -def result_lines(results: list[StreamCheck]) -> str: - """TODO.""" - return ( - tabulate( - [ - { - "name": res.stream.name, - "state": res.state.value, - "reason": res.reason, - } - for res in results - ], - headers="keys", - tablefmt="github", - ) - if results - else "Nothing here..." - ) +def __generate_result_lines(stream_checks: Sequence[StreamCheck]) -> str: + data = [ + { + "name": check.stream.name, + "source": check.stream.source_file, + "state": check.state.name, + "reason": check.reason, + } + for check in stream_checks + ] + + return tabulate(data, headers="keys") diff --git a/kodinerds_iptv/cli_helpers.py b/kodinerds_iptv/cli_helpers.py index 0f00b2be..4808eda8 100644 --- a/kodinerds_iptv/cli_helpers.py +++ b/kodinerds_iptv/cli_helpers.py @@ -8,5 +8,5 @@ def version_callback(*, version: bool) -> None: from typer import Exit - print(f"Kodinerds IPTV {metadata.version(__package__)}") + print(f"Kodinerds IPTV CLI {metadata.version(__package__)}") # noqa: T201 raise Exit diff --git a/kodinerds_iptv/enums.py b/kodinerds_iptv/enums.py index d206a650..44f0645e 100644 --- a/kodinerds_iptv/enums.py +++ b/kodinerds_iptv/enums.py @@ -1,6 +1,6 @@ """TODO.""" -from enum import Enum +from enum import Enum, IntEnum class ListType(Enum): @@ -11,27 +11,24 @@ class ListType(Enum): CLEAN: Stream uses raw URL. KODI: Stream has full Kodi compatibiliy with extended details. PIPE: Stream is piped through FFmpeg with special header. - DASH: Stream has special header to be used with Kodi's adaptive inputstream. """ CLEAN = "clean" KODI = "kodi" PIPE = "pipe" - DASH = "dash" -class StreamState(Enum): +class StreamState(IntEnum): """TODO.""" - SUCCESS = "success" - WARNING = "warning" - SKIPPED = "skipped" - ERROR = "error" - UNKNOWN = "unknown" + SUCCESS = 1 + WARNING = 2 + SKIPPED = 3 + ERROR = 4 + UNKNOWN = 5 class ReportFormat(Enum): """TODO.""" TEXT = "text" - MARKDOWN = "markdown" diff --git a/kodinerds_iptv/generate_lists.py b/kodinerds_iptv/generate_lists.py index 2faec2d8..10ae68c3 100644 --- a/kodinerds_iptv/generate_lists.py +++ b/kodinerds_iptv/generate_lists.py @@ -1,83 +1,35 @@ """Module for generating IPTV m3u files based on YAML source files.""" import itertools -from collections import defaultdict +from collections.abc import Sequence from pathlib import Path +from loguru import logger + from .enums import ListType -from .io_utils import read_streams from .line_writer import AutoLineWriter -from .stream import StreamCategory - -EXTM3U_HEADER = "#EXTM3U" +from .stream import Stream -def generate_sources( - sources: list[Path], - list_types: list[ListType], +def generate_lists( + streams: Sequence[Stream], + list_types: Sequence[ListType], output_dir: Path, output_extension: str, - logo_base_path: str | None, + logo_base_path: str, ) -> None: """TODO.""" - source_content: dict[str, list[StreamCategory]] = {} - for source in sources: - print(f"Reading source: {source}") - source_content[source.stem] = read_streams(source) - - stream_lists: dict[str, list[str]] = {} for list_type in set(list_types): - print(f"Generating stream lines for type '{list_type.value}'") - stream_lists |= generate_stream_lines(source_content, list_type, logo_base_path) - - for file_name, streams in stream_lists.items(): - output_file = Path(f"{output_dir}/{file_name}.{output_extension}") - - print(f"Writing file: {output_file}") - output_file.parent.mkdir(parents=True, exist_ok=True) - output_file.write_text("\n".join((EXTM3U_HEADER, *streams, ""))) - - print("Finished") + line_writer = AutoLineWriter.from_list_type( + list_type, logo_base_path=logo_base_path + ) + lines = itertools.chain.from_iterable( + line_writer.get_lines(stream) for stream in streams + ) -def generate_stream_lines( - content: dict[str, list[StreamCategory]], - list_type: ListType, - logo_base_path: str | None, -) -> dict[str, list[str]]: - """Generate stream lines for all categories based on type. + output_file = Path(f"{output_dir}/{list_type.value}{output_extension}") + logger.info(f"Writing streams file: {output_file}") - Given an input of streams and a list type, this function generates a - nested dictionary of lists containing final output lines. - - Parameters - ---------- - content - A dictionary of stream groups with respective source file name. - list_type - The type of required output format. - logo_base_path - Base path for images that 'tvg_logo' will be appended to. - - Returns - ------- - dict[str, list[str]] - A nested dictionary of lists containing parsed lines of content. - """ - stream_lines: defaultdict[str, list[str]] = defaultdict(list) - line_writer = AutoLineWriter.from_list_type( - list_type, logo_base_path=logo_base_path - ) - full_path = f"{list_type.value.lower()}/{list_type.value.lower()}" - - for source_name, stream_groups in content.items(): - source_path = f"{full_path}_{source_name}" - - for stream_group in stream_groups: - category_path = f"{source_path}_{stream_group.name}" - all_paths = (full_path, source_path, category_path) - - for stream, path in itertools.product(stream_group.streams, all_paths): - stream_lines[path].extend(line_writer.get_lines(stream)) - - return stream_lines + output_file.parent.mkdir(parents=True, exist_ok=True) + output_file.write_text("\n".join(("#EXTM3U", *lines, ""))) diff --git a/kodinerds_iptv/io_utils.py b/kodinerds_iptv/io_utils.py index 985cd013..6aeaeb04 100644 --- a/kodinerds_iptv/io_utils.py +++ b/kodinerds_iptv/io_utils.py @@ -1,33 +1,40 @@ """Module for generating IPTV m3u files based on YAML source files.""" +import itertools import sys from pathlib import Path from typing import Any import yaml +from loguru import logger -from .stream import Stream, StreamCategory +from .stream import Stream -def read_streams(source_file: Path) -> list[StreamCategory]: +def read_stream_sources(*source_files: Path) -> list[Stream]: """TODO.""" - source_content = __yaml_to_dict(source_file) - return [ - StreamCategory(category_name, [Stream(**stream) for stream in category]) - for category_name, category in source_content.items() - ] + logger.debug("Starting to read all source files") + stream_reads = (__read_streams(source_file) for source_file in source_files) + return list(itertools.chain.from_iterable(stream_reads)) -def __yaml_to_dict(source_file: Path) -> dict[str, Any]: - """TODO.""" + +def __read_streams(source_file: Path) -> list[Stream]: + logger.info(f"Reading source file: {source_file}") + + yaml_content = __yaml_to_dict(source_file) + return [Stream(**stream, source_file=source_file) for stream in yaml_content] + + +def __yaml_to_dict(source_file: Path) -> list[dict[str, Any]]: try: with source_file.open("r") as file: return yaml.safe_load(file) except FileNotFoundError: - print(f"Source file does not exist: {source_file}") + logger.error(f"Source file does not exist: {source_file}") sys.exit(1) except yaml.YAMLError as exc: - print(f"Error while parsing YAML file: {exc}") + logger.error(f"Error while parsing YAML file: {exc}") sys.exit(1) diff --git a/kodinerds_iptv/line_writer.py b/kodinerds_iptv/line_writer.py index b5964f97..75fc8fd1 100644 --- a/kodinerds_iptv/line_writer.py +++ b/kodinerds_iptv/line_writer.py @@ -2,9 +2,8 @@ from __future__ import annotations -from dataclasses import dataclass from functools import reduce -from typing import TYPE_CHECKING, Any +from typing import TYPE_CHECKING, Final from .enums import ListType @@ -12,7 +11,7 @@ from .stream import Stream -@dataclass +# TODO: Rename to something like LinesGenerator. class LineWriter: """Default class for creating lines of stream information. @@ -22,6 +21,16 @@ class LineWriter: logo_base_path: str | None = None + def __init__(self, *, logo_base_path: str | None = None) -> None: + """Initialize the LineWriter class. + + Parameters + ---------- + logo_base_path + The base path for the logo files. + """ + self.logo_base_path = logo_base_path + def get_lines(self, stream: Stream) -> list[str]: """Return a tuple of the header and stream line for the provided stream. @@ -35,10 +44,10 @@ def get_lines(self, stream: Stream) -> list[str]: tuple[str, str] A tuple containing the header line and stream line for the provided stream. """ - lines = (*self._header_line(stream), self._stream_line(stream)) + lines = (*self._header_lines(stream), self._stream_line(stream)) return [" ".join(line.split()) for line in lines] - def _header_line(self, stream: Stream) -> list[str]: + def _header_lines(self, stream: Stream) -> list[str]: # Return header line for stream. raw_lines = ( "#EXTINF:-1", @@ -61,7 +70,7 @@ def _stream_line(self, stream: Stream) -> str: # Return stream line inclurding URL for stream. return f"{stream.url}" - def _group_title(self, stream: Stream) -> str: + def _group_title(self, stream: Stream) -> str | None: # Return default group title for stream. return stream.group_title @@ -75,7 +84,7 @@ class KodiLineWriter(LineWriter): be compatible with Kodi's YouTube plugin. """ - __YOUTUBE_URL_REPLACE = ( + __YOUTUBE_URL_REPLACE: Final[tuple[str, str]] = ( "https://www.youtube.com/embed/", "plugin://plugin.video.youtube/play/?video_id=", ) @@ -86,7 +95,7 @@ def _stream_line(self, stream: Stream) -> str: def _group_title(self, stream: Stream) -> str: # Override group title with Kodi specific group. - return stream.group_title_kodi + return ";".join(stream.group_titles_kodi) class PipeLineWriter(LineWriter): @@ -99,7 +108,7 @@ class PipeLineWriter(LineWriter): stream URL. """ - __REPLACE_ENCODING_CHARS = { + __REPLACE_ENCODING_CHARS: Final[set[tuple[str, str]]] = { ("Ä", "Ae"), ("ä", "ae"), ("Ö", "Oe"), @@ -132,35 +141,13 @@ def _stream_line(self, stream: Stream) -> str: """ -class DashLineWriter(LineWriter): - """A LineWriter subclass for writing Dash/MPD streams. - - TODO - """ # TODO - - __KODI_PROPS = [ - "#KODIPROP:inputstreamaddon=inputstream.adaptive", - "#KODIPROP:inputstream.adaptive.manifest_type=mpd", - ] - - def _header_line(self, stream: Stream) -> list[str]: - # Override stream line for pipe usage. - # The stream URL includes several required attributes for FFmpeg. - return [*super()._header_line(stream), *self.__KODI_PROPS] - - def _group_title(self, stream: Stream) -> str: - # Override group title with Kodi specific group. - return stream.group_title_kodi - - class AutoLineWriter: """TODO.""" - __MAPPING: dict[ListType, Any] = { + __MAPPING: Final[dict[ListType, type[LineWriter]]] = { ListType.CLEAN: LineWriter, ListType.KODI: KodiLineWriter, ListType.PIPE: PipeLineWriter, - ListType.DASH: DashLineWriter, } @classmethod diff --git a/kodinerds_iptv/main.py b/kodinerds_iptv/main.py index 7ddfd72e..38a550e4 100644 --- a/kodinerds_iptv/main.py +++ b/kodinerds_iptv/main.py @@ -1,60 +1,121 @@ """Command line interface for kodinerds-iptv.""" from pathlib import Path -from typing import Optional +from typing import Annotated, Final, Optional from typer import Argument, Option, Typer from .cli_helpers import version_callback from .enums import ListType, ReportFormat - -StrOrNone = Optional[str] - - -CLI_SOURCES = Argument(..., exists=True, help="YAML source files.") -CLI_VERSION = Option(None, "--version", callback=version_callback, is_eager=True) - -DEFAULT_LIST_TYPES = [lt.value for lt in {ListType.CLEAN, ListType.KODI, ListType.PIPE}] +from .io_utils import read_stream_sources + +# Workaround for Typer not support '|' for Union types: +# GitHub issue: https://github.com/tiangolo/typer/issues/533 +OptionalStr = Optional[str] # noqa: UP007 +OptionalBool = Optional[bool] # noqa: UP007 + +HELP_VERSION = "Show version and exit." +HELP_SOURCES = "YAML source files." +HELP_LIST_TYPES = "List types." +HELP_OUTPUT_DIR = "Output directory." +HELP_OUTPUT_EXTENSION = "Output file extension." +HELP_LOGO_BASE_PATH = "Prepended base path for channel logos." +HELP_TIMEOUT = "Timeout for stream availability check." +HELP_MAX_RETRIES = "Maximum retries for failed stream check." +HELP_MAX_PARALLEL = "Maximum parallel connections from client." +HELP_REPORT_FORMAT = "Format for report output." +HELP_REPORTS_DIR = "Reports directory." + +Version = Annotated[ + OptionalBool, + Option( + "--version", + callback=version_callback, + is_eager=True, + show_default=False, + help=HELP_VERSION, + ), +] +Sources = Annotated[list[Path], Argument(exists=True, help=HELP_SOURCES)] +CheckReportsOutputDir = Annotated[ + Path, Option(writable=True, dir_okay=True, help=HELP_REPORTS_DIR) +] +CheckTimeout = Annotated[int, Option(help=HELP_TIMEOUT)] +CheckMaxRetries = Annotated[int, Option(help=HELP_MAX_RETRIES)] +CheckMaxParallel = Annotated[int, Option(help=HELP_MAX_PARALLEL)] +CheckReportFormat = Annotated[ + ReportFormat, Option(help=HELP_REPORT_FORMAT, hidden=True) +] +GenerateListTypes = Annotated[list[ListType], Option(help=HELP_LIST_TYPES)] +GenerateOutputDir = Annotated[Path, Option(help=HELP_OUTPUT_DIR)] +GenerateOutputExtension = Annotated[str, Option(help=HELP_OUTPUT_EXTENSION)] +GenerateLogoBasePath = Annotated[str, Option(help=HELP_LOGO_BASE_PATH)] + +DEFAULT_LIST_TYPES: Final[list[str]] = [ + ListType.CLEAN.value, + ListType.KODI.value, + ListType.PIPE.value, +] app = Typer() -@app.callback() -def callback(*, value: bool = CLI_VERSION) -> None: # noqa: ARG001 - """Kodinerds IPTV CLI application.""" +@app.command() +def generate( + sources: Sources, + *, + list_types: GenerateListTypes = DEFAULT_LIST_TYPES, # pyright: ignore [reportGeneralTypeIssues] + output_dir: GenerateOutputDir = Path("output"), + output_extension: GenerateOutputExtension = ".m3u", + logo_base_path: GenerateLogoBasePath = "", +) -> None: + """Generate IPTV lists based on YAML source file.""" + # TODO: Allow output file(s) name to be configured. + # TODO: Allow custom filtering, sorting, and grouping. + # TODO: Log total duration. + # TODO: Filter duplicates. + from .generate_lists import generate_lists + + generate_lists( + read_stream_sources(*sources), + list_types, + output_dir, + output_extension, + logo_base_path, + ) @app.command("check") def check( - sources: list[Path] = CLI_SOURCES, + sources: Sources, *, - output_dir: Path = Option("reports", writable=True, help="Reports directory."), - timeout: int = Option(1, help="Timeout for stream check."), - retries: int = Option(1, help="Retries for failed stream check."), - report_format: ReportFormat = Option( - ReportFormat.TEXT.value, help="Format for report output." - ), + output_dir: CheckReportsOutputDir = Path("reports"), + timeout: CheckTimeout = 10, + max_retries: CheckMaxRetries = 3, + max_parallel: int = 10, + _report_format: CheckReportFormat = ReportFormat.TEXT.value, # pyright: ignore [reportGeneralTypeIssues] ) -> None: """Check stream URLs on availability.""" - # TODO: Check for duplicates in sources. - from .check_availability import check_sources - - check_sources(sources, output_dir, timeout, retries, report_format) + # TODO: Allow output file(s) name to be configured. + # TODO: Allow custom filtering, sorting, and grouping. + # TODO: Allow custom output format (e.g. JSON, HTML, CSV, Markdown, ...). + # TODO: Log total duration. + # TODO: Filter duplicates. + import asyncio + + from .check_availability import check_availability + + asyncio.run( + check_availability( + read_stream_sources(*sources), + output_dir, + timeout=timeout, + max_retries=max_retries, + max_parallel=max_parallel, + ) + ) -@app.command() -def generate( - sources: list[Path] = CLI_SOURCES, - *, - list_types: list[ListType] = Option(DEFAULT_LIST_TYPES, help="List types."), - output_dir: Path = Option("output", writable=True, help="Output directory."), - output_extension: str = Option("m3u", help="Output file extension."), - logo_base_path: StrOrNone = Option( - None, help="Prepended base path for channel logos." - ), -) -> None: - """Generate IPTV lists based on YAML source file.""" - # TODO: Check for duplicates in sources. - from .generate_lists import generate_sources - - generate_sources(sources, list_types, output_dir, output_extension, logo_base_path) +@app.callback() +def callback(*, _version: Version = None) -> None: + """Kodinerds IPTV CLI application.""" diff --git a/kodinerds_iptv/stream.py b/kodinerds_iptv/stream.py index fa09c4e3..cf90c8e8 100644 --- a/kodinerds_iptv/stream.py +++ b/kodinerds_iptv/stream.py @@ -1,27 +1,32 @@ """TODO.""" -from dataclasses import KW_ONLY, dataclass +import functools +from dataclasses import KW_ONLY, dataclass, field +from pathlib import Path from .enums import StreamState -@dataclass +@dataclass(frozen=True, slots=True) class Stream: """Stores information about a TV or radio stream.""" name: str - url: str - group_title: str - group_title_kodi: str - tvg_name: str - tvg_logo: str + url: str # TODO: Integrate various URL types: IPTV/M3U8, YouTube, RTMP, DASH, ... + category: str | None = None + tvg_name: str | None = None + tvg_logo: str | None = None # TODO: Allow absolute URLs. + group_title: str | None = None + group_titles_kodi: list[str] = field(default_factory=list) tvg_id: str | None = None quality: str | None = None radio: bool = False skip_check: bool = False + origin: str | None = None + source_file: Path | None = None -@dataclass +@dataclass(frozen=True, slots=True) class StreamCategory: """Wrapper for streams in a category.""" @@ -29,7 +34,8 @@ class StreamCategory: streams: list[Stream] -@dataclass +@dataclass(slots=True) +@functools.total_ordering class StreamCheck: """TODO.""" @@ -43,3 +49,17 @@ def output(self) -> str: """TODO.""" error_line = f" ({self.reason})" if self.reason else "" return f"{self.stream.name}: {self.state.value}{error_line}" + + def __eq__(self, other: object) -> bool: + """TODO.""" + if not isinstance(other, StreamCheck): + return NotImplemented + + return self.state == other.state + + def __lt__(self, other: object) -> bool: + """TODO.""" + if not isinstance(other, StreamCheck): + return NotImplemented + + return self.state < other.state diff --git a/poetry.lock b/poetry.lock index 21058d0d..3324e789 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,116 +1,59 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] -name = "anyio" -version = "3.6.2" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "main" +name = "aiometer" +version = "0.5.0" +description = "A Python concurrency scheduling library, compatible with asyncio and trio" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.8" files = [ - {file = "anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"}, - {file = "anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"}, + {file = "aiometer-0.5.0-py3-none-any.whl", hash = "sha256:57e54a067e6918504844610da23aabf6e179cb0f01104503b3db4bfb39f5e1f2"}, + {file = "aiometer-0.5.0.tar.gz", hash = "sha256:1d441ad3c16eaa56d438e5f9a2f9fbccdb29f6140fb36f9cb68183545ec48691"}, ] [package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" - -[package.extras] -doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"] -trio = ["trio (>=0.16,<0.22)"] - -[[package]] -name = "attrs" -version = "22.2.0" -description = "Classes Without Boilerplate" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, - {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, -] - -[package.extras] -cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] -tests = ["attrs[tests-no-zope]", "zope.interface"] -tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] +anyio = ">=3.2,<5" [[package]] -name = "black" -version = "23.1.0" -description = "The uncompromising code formatter." -category = "dev" +name = "anyio" +version = "4.2.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "black-23.1.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:b6a92a41ee34b883b359998f0c8e6eb8e99803aa8bf3123bf2b2e6fec505a221"}, - {file = "black-23.1.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:57c18c5165c1dbe291d5306e53fb3988122890e57bd9b3dcb75f967f13411a26"}, - {file = "black-23.1.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:9880d7d419bb7e709b37e28deb5e68a49227713b623c72b2b931028ea65f619b"}, - {file = "black-23.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6663f91b6feca5d06f2ccd49a10f254f9298cc1f7f49c46e498a0771b507104"}, - {file = "black-23.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9afd3f493666a0cd8f8df9a0200c6359ac53940cbde049dcb1a7eb6ee2dd7074"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:bfffba28dc52a58f04492181392ee380e95262af14ee01d4bc7bb1b1c6ca8d27"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c1c476bc7b7d021321e7d93dc2cbd78ce103b84d5a4cf97ed535fbc0d6660648"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:382998821f58e5c8238d3166c492139573325287820963d2f7de4d518bd76958"}, - {file = "black-23.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf649fda611c8550ca9d7592b69f0637218c2369b7744694c5e4902873b2f3a"}, - {file = "black-23.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:121ca7f10b4a01fd99951234abdbd97728e1240be89fde18480ffac16503d481"}, - {file = "black-23.1.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:a8471939da5e824b891b25751955be52ee7f8a30a916d570a5ba8e0f2eb2ecad"}, - {file = "black-23.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8178318cb74f98bc571eef19068f6ab5613b3e59d4f47771582f04e175570ed8"}, - {file = "black-23.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a436e7881d33acaf2536c46a454bb964a50eff59b21b51c6ccf5a40601fbef24"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:a59db0a2094d2259c554676403fa2fac3473ccf1354c1c63eccf7ae65aac8ab6"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:0052dba51dec07ed029ed61b18183942043e00008ec65d5028814afaab9a22fd"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:49f7b39e30f326a34b5c9a4213213a6b221d7ae9d58ec70df1c4a307cf2a1580"}, - {file = "black-23.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:162e37d49e93bd6eb6f1afc3e17a3d23a823042530c37c3c42eeeaf026f38468"}, - {file = "black-23.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b70eb40a78dfac24842458476135f9b99ab952dd3f2dab738c1881a9b38b753"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:a29650759a6a0944e7cca036674655c2f0f63806ddecc45ed40b7b8aa314b651"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:bb460c8561c8c1bec7824ecbc3ce085eb50005883a6203dcfb0122e95797ee06"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c91dfc2c2a4e50df0026f88d2215e166616e0c80e86004d0003ece0488db2739"}, - {file = "black-23.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a951cc83ab535d248c89f300eccbd625e80ab880fbcfb5ac8afb5f01a258ac9"}, - {file = "black-23.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0680d4380db3719ebcfb2613f34e86c8e6d15ffeabcf8ec59355c5e7b85bb555"}, - {file = "black-23.1.0-py3-none-any.whl", hash = "sha256:7a0f701d314cfa0896b9001df70a530eb2472babb76086344e688829efd97d32"}, - {file = "black-23.1.0.tar.gz", hash = "sha256:b0bd97bea8903f5a2ba7219257a44e3f1f9d00073d6cc1add68f0beec69692ac"}, + {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, + {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, ] [package.dependencies] -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -packaging = ">=22.0" -pathspec = ">=0.9.0" -platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" [package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] [[package]] name = "certifi" -version = "2022.12.7" +version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, - {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, + {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, + {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] [[package]] name = "click" -version = "8.1.3" +version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -120,7 +63,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -128,108 +70,74 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[[package]] -name = "commonmark" -version = "0.9.1" -description = "Python parser for the CommonMark Markdown spec" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, - {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, -] - -[package.extras] -test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] - [[package]] name = "coverage" -version = "7.2.2" +version = "7.4.0" description = "Code coverage measurement for Python" -category = "dev" optional = false -python-versions = ">=3.7" -files = [ - {file = "coverage-7.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c90e73bdecb7b0d1cea65a08cb41e9d672ac6d7995603d6465ed4914b98b9ad7"}, - {file = "coverage-7.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e2926b8abedf750c2ecf5035c07515770944acf02e1c46ab08f6348d24c5f94d"}, - {file = "coverage-7.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57b77b9099f172804e695a40ebaa374f79e4fb8b92f3e167f66facbf92e8e7f5"}, - {file = "coverage-7.2.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:efe1c0adad110bf0ad7fb59f833880e489a61e39d699d37249bdf42f80590169"}, - {file = "coverage-7.2.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2199988e0bc8325d941b209f4fd1c6fa007024b1442c5576f1a32ca2e48941e6"}, - {file = "coverage-7.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:81f63e0fb74effd5be736cfe07d710307cc0a3ccb8f4741f7f053c057615a137"}, - {file = "coverage-7.2.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:186e0fc9cf497365036d51d4d2ab76113fb74f729bd25da0975daab2e107fd90"}, - {file = "coverage-7.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:420f94a35e3e00a2b43ad5740f935358e24478354ce41c99407cddd283be00d2"}, - {file = "coverage-7.2.2-cp310-cp310-win32.whl", hash = "sha256:38004671848b5745bb05d4d621526fca30cee164db42a1f185615f39dc997292"}, - {file = "coverage-7.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:0ce383d5f56d0729d2dd40e53fe3afeb8f2237244b0975e1427bfb2cf0d32bab"}, - {file = "coverage-7.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3eb55b7b26389dd4f8ae911ba9bc8c027411163839dea4c8b8be54c4ee9ae10b"}, - {file = "coverage-7.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d2b96123a453a2d7f3995ddb9f28d01fd112319a7a4d5ca99796a7ff43f02af5"}, - {file = "coverage-7.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:299bc75cb2a41e6741b5e470b8c9fb78d931edbd0cd009c58e5c84de57c06731"}, - {file = "coverage-7.2.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e1df45c23d4230e3d56d04414f9057eba501f78db60d4eeecfcb940501b08fd"}, - {file = "coverage-7.2.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:006ed5582e9cbc8115d2e22d6d2144a0725db542f654d9d4fda86793832f873d"}, - {file = "coverage-7.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d683d230b5774816e7d784d7ed8444f2a40e7a450e5720d58af593cb0b94a212"}, - {file = "coverage-7.2.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8efb48fa743d1c1a65ee8787b5b552681610f06c40a40b7ef94a5b517d885c54"}, - {file = "coverage-7.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4c752d5264053a7cf2fe81c9e14f8a4fb261370a7bb344c2a011836a96fb3f57"}, - {file = "coverage-7.2.2-cp311-cp311-win32.whl", hash = "sha256:55272f33da9a5d7cccd3774aeca7a01e500a614eaea2a77091e9be000ecd401d"}, - {file = "coverage-7.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:92ebc1619650409da324d001b3a36f14f63644c7f0a588e331f3b0f67491f512"}, - {file = "coverage-7.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5afdad4cc4cc199fdf3e18088812edcf8f4c5a3c8e6cb69127513ad4cb7471a9"}, - {file = "coverage-7.2.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0484d9dd1e6f481b24070c87561c8d7151bdd8b044c93ac99faafd01f695c78e"}, - {file = "coverage-7.2.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d530191aa9c66ab4f190be8ac8cc7cfd8f4f3217da379606f3dd4e3d83feba69"}, - {file = "coverage-7.2.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac0f522c3b6109c4b764ffec71bf04ebc0523e926ca7cbe6c5ac88f84faced0"}, - {file = "coverage-7.2.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ba279aae162b20444881fc3ed4e4f934c1cf8620f3dab3b531480cf602c76b7f"}, - {file = "coverage-7.2.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:53d0fd4c17175aded9c633e319360d41a1f3c6e352ba94edcb0fa5167e2bad67"}, - {file = "coverage-7.2.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c99cb7c26a3039a8a4ee3ca1efdde471e61b4837108847fb7d5be7789ed8fd9"}, - {file = "coverage-7.2.2-cp37-cp37m-win32.whl", hash = "sha256:5cc0783844c84af2522e3a99b9b761a979a3ef10fb87fc4048d1ee174e18a7d8"}, - {file = "coverage-7.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:817295f06eacdc8623dc4df7d8b49cea65925030d4e1e2a7c7218380c0072c25"}, - {file = "coverage-7.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6146910231ece63facfc5984234ad1b06a36cecc9fd0c028e59ac7c9b18c38c6"}, - {file = "coverage-7.2.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:387fb46cb8e53ba7304d80aadca5dca84a2fbf6fe3faf6951d8cf2d46485d1e5"}, - {file = "coverage-7.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:046936ab032a2810dcaafd39cc4ef6dd295df1a7cbead08fe996d4765fca9fe4"}, - {file = "coverage-7.2.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e627dee428a176ffb13697a2c4318d3f60b2ccdde3acdc9b3f304206ec130ccd"}, - {file = "coverage-7.2.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fa54fb483decc45f94011898727802309a109d89446a3c76387d016057d2c84"}, - {file = "coverage-7.2.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3668291b50b69a0c1ef9f462c7df2c235da3c4073f49543b01e7eb1dee7dd540"}, - {file = "coverage-7.2.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7c20b731211261dc9739bbe080c579a1835b0c2d9b274e5fcd903c3a7821cf88"}, - {file = "coverage-7.2.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5764e1f7471cb8f64b8cda0554f3d4c4085ae4b417bfeab236799863703e5de2"}, - {file = "coverage-7.2.2-cp38-cp38-win32.whl", hash = "sha256:4f01911c010122f49a3e9bdc730eccc66f9b72bd410a3a9d3cb8448bb50d65d3"}, - {file = "coverage-7.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:c448b5c9e3df5448a362208b8d4b9ed85305528313fca1b479f14f9fe0d873b8"}, - {file = "coverage-7.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bfe7085783cda55e53510482fa7b5efc761fad1abe4d653b32710eb548ebdd2d"}, - {file = "coverage-7.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9d22e94e6dc86de981b1b684b342bec5e331401599ce652900ec59db52940005"}, - {file = "coverage-7.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:507e4720791977934bba016101579b8c500fb21c5fa3cd4cf256477331ddd988"}, - {file = "coverage-7.2.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc4803779f0e4b06a2361f666e76f5c2e3715e8e379889d02251ec911befd149"}, - {file = "coverage-7.2.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db8c2c5ace167fd25ab5dd732714c51d4633f58bac21fb0ff63b0349f62755a8"}, - {file = "coverage-7.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f68ee32d7c4164f1e2c8797535a6d0a3733355f5861e0f667e37df2d4b07140"}, - {file = "coverage-7.2.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d52f0a114b6a58305b11a5cdecd42b2e7f1ec77eb20e2b33969d702feafdd016"}, - {file = "coverage-7.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:797aad79e7b6182cb49c08cc5d2f7aa7b2128133b0926060d0a8889ac43843be"}, - {file = "coverage-7.2.2-cp39-cp39-win32.whl", hash = "sha256:db45eec1dfccdadb179b0f9ca616872c6f700d23945ecc8f21bb105d74b1c5fc"}, - {file = "coverage-7.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:8dbe2647bf58d2c5a6c5bcc685f23b5f371909a5624e9f5cd51436d6a9f6c6ef"}, - {file = "coverage-7.2.2-pp37.pp38.pp39-none-any.whl", hash = "sha256:872d6ce1f5be73f05bea4df498c140b9e7ee5418bfa2cc8204e7f9b817caa968"}, - {file = "coverage-7.2.2.tar.gz", hash = "sha256:36dd42da34fe94ed98c39887b86db9d06777b1c8f860520e21126a75507024f2"}, +python-versions = ">=3.8" +files = [ + {file = "coverage-7.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36b0ea8ab20d6a7564e89cb6135920bc9188fb5f1f7152e94e8300b7b189441a"}, + {file = "coverage-7.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0676cd0ba581e514b7f726495ea75aba3eb20899d824636c6f59b0ed2f88c471"}, + {file = "coverage-7.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ca5c71a5a1765a0f8f88022c52b6b8be740e512980362f7fdbb03725a0d6b9"}, + {file = "coverage-7.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7c97726520f784239f6c62506bc70e48d01ae71e9da128259d61ca5e9788516"}, + {file = "coverage-7.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:815ac2d0f3398a14286dc2cea223a6f338109f9ecf39a71160cd1628786bc6f5"}, + {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:80b5ee39b7f0131ebec7968baa9b2309eddb35b8403d1869e08f024efd883566"}, + {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5b2ccb7548a0b65974860a78c9ffe1173cfb5877460e5a229238d985565574ae"}, + {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:995ea5c48c4ebfd898eacb098164b3cc826ba273b3049e4a889658548e321b43"}, + {file = "coverage-7.4.0-cp310-cp310-win32.whl", hash = "sha256:79287fd95585ed36e83182794a57a46aeae0b64ca53929d1176db56aacc83451"}, + {file = "coverage-7.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:5b14b4f8760006bfdb6e08667af7bc2d8d9bfdb648351915315ea17645347137"}, + {file = "coverage-7.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04387a4a6ecb330c1878907ce0dc04078ea72a869263e53c72a1ba5bbdf380ca"}, + {file = "coverage-7.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea81d8f9691bb53f4fb4db603203029643caffc82bf998ab5b59ca05560f4c06"}, + {file = "coverage-7.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74775198b702868ec2d058cb92720a3c5a9177296f75bd97317c787daf711505"}, + {file = "coverage-7.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76f03940f9973bfaee8cfba70ac991825611b9aac047e5c80d499a44079ec0bc"}, + {file = "coverage-7.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:485e9f897cf4856a65a57c7f6ea3dc0d4e6c076c87311d4bc003f82cfe199d25"}, + {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6ae8c9d301207e6856865867d762a4b6fd379c714fcc0607a84b92ee63feff70"}, + {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bf477c355274a72435ceb140dc42de0dc1e1e0bf6e97195be30487d8eaaf1a09"}, + {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:83c2dda2666fe32332f8e87481eed056c8b4d163fe18ecc690b02802d36a4d26"}, + {file = "coverage-7.4.0-cp311-cp311-win32.whl", hash = "sha256:697d1317e5290a313ef0d369650cfee1a114abb6021fa239ca12b4849ebbd614"}, + {file = "coverage-7.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:26776ff6c711d9d835557ee453082025d871e30b3fd6c27fcef14733f67f0590"}, + {file = "coverage-7.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:13eaf476ec3e883fe3e5fe3707caeb88268a06284484a3daf8250259ef1ba143"}, + {file = "coverage-7.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846f52f46e212affb5bcf131c952fb4075b55aae6b61adc9856222df89cbe3e2"}, + {file = "coverage-7.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26f66da8695719ccf90e794ed567a1549bb2644a706b41e9f6eae6816b398c4a"}, + {file = "coverage-7.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:164fdcc3246c69a6526a59b744b62e303039a81e42cfbbdc171c91a8cc2f9446"}, + {file = "coverage-7.4.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:316543f71025a6565677d84bc4df2114e9b6a615aa39fb165d697dba06a54af9"}, + {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bb1de682da0b824411e00a0d4da5a784ec6496b6850fdf8c865c1d68c0e318dd"}, + {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0e8d06778e8fbffccfe96331a3946237f87b1e1d359d7fbe8b06b96c95a5407a"}, + {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a56de34db7b7ff77056a37aedded01b2b98b508227d2d0979d373a9b5d353daa"}, + {file = "coverage-7.4.0-cp312-cp312-win32.whl", hash = "sha256:51456e6fa099a8d9d91497202d9563a320513fcf59f33991b0661a4a6f2ad450"}, + {file = "coverage-7.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:cd3c1e4cb2ff0083758f09be0f77402e1bdf704adb7f89108007300a6da587d0"}, + {file = "coverage-7.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d1bf53c4c8de58d22e0e956a79a5b37f754ed1ffdbf1a260d9dcfa2d8a325e"}, + {file = "coverage-7.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:109f5985182b6b81fe33323ab4707011875198c41964f014579cf82cebf2bb85"}, + {file = "coverage-7.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc9d4bc55de8003663ec94c2f215d12d42ceea128da8f0f4036235a119c88ac"}, + {file = "coverage-7.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc6d65b21c219ec2072c1293c505cf36e4e913a3f936d80028993dd73c7906b1"}, + {file = "coverage-7.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a10a4920def78bbfff4eff8a05c51be03e42f1c3735be42d851f199144897ba"}, + {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b8e99f06160602bc64da35158bb76c73522a4010f0649be44a4e167ff8555952"}, + {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7d360587e64d006402b7116623cebf9d48893329ef035278969fa3bbf75b697e"}, + {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29f3abe810930311c0b5d1a7140f6395369c3db1be68345638c33eec07535105"}, + {file = "coverage-7.4.0-cp38-cp38-win32.whl", hash = "sha256:5040148f4ec43644702e7b16ca864c5314ccb8ee0751ef617d49aa0e2d6bf4f2"}, + {file = "coverage-7.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:9864463c1c2f9cb3b5db2cf1ff475eed2f0b4285c2aaf4d357b69959941aa555"}, + {file = "coverage-7.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:936d38794044b26c99d3dd004d8af0035ac535b92090f7f2bb5aa9c8e2f5cd42"}, + {file = "coverage-7.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:799c8f873794a08cdf216aa5d0531c6a3747793b70c53f70e98259720a6fe2d7"}, + {file = "coverage-7.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7defbb9737274023e2d7af02cac77043c86ce88a907c58f42b580a97d5bcca9"}, + {file = "coverage-7.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1526d265743fb49363974b7aa8d5899ff64ee07df47dd8d3e37dcc0818f09ed"}, + {file = "coverage-7.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf635a52fc1ea401baf88843ae8708591aa4adff875e5c23220de43b1ccf575c"}, + {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:756ded44f47f330666843b5781be126ab57bb57c22adbb07d83f6b519783b870"}, + {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0eb3c2f32dabe3a4aaf6441dde94f35687224dfd7eb2a7f47f3fd9428e421058"}, + {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bfd5db349d15c08311702611f3dccbef4b4e2ec148fcc636cf8739519b4a5c0f"}, + {file = "coverage-7.4.0-cp39-cp39-win32.whl", hash = "sha256:53d7d9158ee03956e0eadac38dfa1ec8068431ef8058fe6447043db1fb40d932"}, + {file = "coverage-7.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfd2a8b6b0d8e66e944d47cdec2f47c48fef2ba2f2dff5a9a75757f64172857e"}, + {file = "coverage-7.4.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:c530833afc4707fe48524a44844493f36d8727f04dcce91fb978c414a8556cc6"}, + {file = "coverage-7.4.0.tar.gz", hash = "sha256:707c0f58cb1712b8809ece32b68996ee1e609f71bd14615bd8f87a1293cb610e"}, ] -[package.dependencies] -tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} - [package.extras] toml = ["tomli"] -[[package]] -name = "exceptiongroup" -version = "1.1.1" -description = "Backport of PEP 654 (exception groups)" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, - {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, -] - -[package.extras] -test = ["pytest (>=6)"] - [[package]] name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -239,67 +147,64 @@ files = [ [[package]] name = "httpcore" -version = "0.16.3" +version = "1.0.2" description = "A minimal low-level HTTP client." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, - {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, + {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, + {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, ] [package.dependencies] -anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = ">=1.0.0,<2.0.0" [package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.23.0)"] [[package]] name = "httpx" -version = "0.23.3" +version = "0.26.0" description = "The next generation HTTP client." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, - {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, + {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, + {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, ] [package.dependencies] +anyio = "*" certifi = "*" -httpcore = ">=0.15.0,<0.17.0" -rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +httpcore = "==1.*" +idna = "*" sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<13)"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] +socks = ["socksio (==1.*)"] [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -308,67 +213,78 @@ files = [ ] [[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" +name = "loguru" +version = "0.7.2" +description = "Python logging made (stupidly) simple" optional = false python-versions = ">=3.5" files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, + {file = "loguru-0.7.2-py3-none-any.whl", hash = "sha256:003d71e3d3ed35f0f8984898359d65b79e5b21943f78af86aa5491210429b8eb"}, + {file = "loguru-0.7.2.tar.gz", hash = "sha256:e671a53522515f34fd406340ee968cb9ecafbc4b36c679da03c18fd8d0bd51ac"}, ] +[package.dependencies] +colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} +win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} + +[package.extras] +dev = ["Sphinx (==7.2.5)", "colorama (==0.4.5)", "colorama (==0.4.6)", "exceptiongroup (==1.1.3)", "freezegun (==1.1.0)", "freezegun (==1.2.2)", "mypy (==v0.910)", "mypy (==v0.971)", "mypy (==v1.4.1)", "mypy (==v1.5.1)", "pre-commit (==3.4.0)", "pytest (==6.1.2)", "pytest (==7.4.0)", "pytest-cov (==2.12.1)", "pytest-cov (==4.1.0)", "pytest-mypy-plugins (==1.9.3)", "pytest-mypy-plugins (==3.0.0)", "sphinx-autobuild (==2021.3.14)", "sphinx-rtd-theme (==1.3.0)", "tox (==3.27.1)", "tox (==4.11.0)"] + [[package]] -name = "packaging" -version = "23.0" -description = "Core utilities for Python packages" -category = "dev" +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, - {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, ] +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + [[package]] -name = "pathspec" -version = "0.11.1" -description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" optional = false python-versions = ">=3.7" files = [ - {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, - {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] [[package]] -name = "platformdirs" -version = "3.1.1" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.1.1-py3-none-any.whl", hash = "sha256:e5986afb596e4bb5bde29a79ac9061aa955b94fca2399b7aaac4090860920dd8"}, - {file = "platformdirs-3.1.1.tar.gz", hash = "sha256:024996549ee88ec1a9aa99ff7f8fc819bb59e2c3477b410d90a16d32d6e707aa"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] -[package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] - [[package]] name = "pluggy" -version = "1.0.0" +version = "1.3.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, ] [package.extras] @@ -377,53 +293,48 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pygments" -version = "2.14.0" +version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "Pygments-2.14.0-py3-none-any.whl", hash = "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"}, - {file = "Pygments-2.14.0.tar.gz", hash = "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297"}, + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pytest" -version = "7.2.2" +version = "7.4.4" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.2.2-py3-none-any.whl", hash = "sha256:130328f552dcfac0b1cec75c12e3f005619dc5f874f0a06e8ff7263f0ee6225e"}, - {file = "pytest-7.2.2.tar.gz", hash = "sha256:c99ab0c73aceb050f68929bc93af19ab6db0558791c6a0715723abe9d0ade9d4"}, + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, ] [package.dependencies] -attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" -version = "4.0.0" +version = "4.1.0" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"}, - {file = "pytest_cov-4.0.0-py3-none-any.whl", hash = "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b"}, + {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, + {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, ] [package.dependencies] @@ -435,135 +346,122 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale [[package]] name = "pyyaml" -version = "6.0" +version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] -[[package]] -name = "rfc3986" -version = "1.5.0" -description = "Validating URI References per RFC 3986" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, - {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, -] - -[package.dependencies] -idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} - -[package.extras] -idna2008 = ["idna"] - [[package]] name = "rich" -version = "12.6.0" +version = "13.7.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -category = "main" optional = false -python-versions = ">=3.6.3,<4.0.0" +python-versions = ">=3.7.0" files = [ - {file = "rich-12.6.0-py3-none-any.whl", hash = "sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e"}, - {file = "rich-12.6.0.tar.gz", hash = "sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0"}, + {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"}, + {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"}, ] [package.dependencies] -commonmark = ">=0.9.0,<0.10.0" -pygments = ">=2.6.0,<3.0.0" +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" [package.extras] -jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] +jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "ruff" -version = "0.0.254" -description = "An extremely fast Python linter, written in Rust." -category = "dev" +version = "0.1.11" +description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.0.254-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:dd58c500d039fb381af8d861ef456c3e94fd6855c3d267d6c6718c9a9fe07be0"}, - {file = "ruff-0.0.254-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:688379050ae05394a6f9f9c8471587fd5dcf22149bd4304a4ede233cc4ef89a1"}, - {file = "ruff-0.0.254-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac1429be6d8bd3db0bf5becac3a38bd56f8421447790c50599cd90fd53417ec4"}, - {file = "ruff-0.0.254-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:059a380c08e849b6f312479b18cc63bba2808cff749ad71555f61dd930e3c9a2"}, - {file = "ruff-0.0.254-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3f15d5d033fd3dcb85d982d6828ddab94134686fac2c02c13a8822aa03e1321"}, - {file = "ruff-0.0.254-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:8deba44fd563361c488dedec90dc330763ee0c01ba54e17df54ef5820079e7e0"}, - {file = "ruff-0.0.254-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef20bf798ffe634090ad3dc2e8aa6a055f08c448810a2f800ab716cc18b80107"}, - {file = "ruff-0.0.254-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0deb1d7226ea9da9b18881736d2d96accfa7f328c67b7410478cc064ad1fa6aa"}, - {file = "ruff-0.0.254-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27d39d697fdd7df1f2a32c1063756ee269ad8d5345c471ee3ca450636d56e8c6"}, - {file = "ruff-0.0.254-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2fc21d060a3197ac463596a97d9b5db2d429395938b270ded61dd60f0e57eb21"}, - {file = "ruff-0.0.254-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f70dc93bc9db15cccf2ed2a831938919e3e630993eeea6aba5c84bc274237885"}, - {file = "ruff-0.0.254-py3-none-musllinux_1_2_i686.whl", hash = "sha256:09c764bc2bd80c974f7ce1f73a46092c286085355a5711126af351b9ae4bea0c"}, - {file = "ruff-0.0.254-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d4385cdd30153b7aa1d8f75dfd1ae30d49c918ead7de07e69b7eadf0d5538a1f"}, - {file = "ruff-0.0.254-py3-none-win32.whl", hash = "sha256:c38291bda4c7b40b659e8952167f386e86ec29053ad2f733968ff1d78b4c7e15"}, - {file = "ruff-0.0.254-py3-none-win_amd64.whl", hash = "sha256:e15742df0f9a3615fbdc1ee9a243467e97e75bf88f86d363eee1ed42cedab1ec"}, - {file = "ruff-0.0.254-py3-none-win_arm64.whl", hash = "sha256:b435afc4d65591399eaf4b2af86e441a71563a2091c386cadf33eaa11064dc09"}, - {file = "ruff-0.0.254.tar.gz", hash = "sha256:0eb66c9520151d3bd950ea43b3a088618a8e4e10a5014a72687881e6f3606312"}, + {file = "ruff-0.1.11-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:a7f772696b4cdc0a3b2e527fc3c7ccc41cdcb98f5c80fdd4f2b8c50eb1458196"}, + {file = "ruff-0.1.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:934832f6ed9b34a7d5feea58972635c2039c7a3b434fe5ba2ce015064cb6e955"}, + {file = "ruff-0.1.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea0d3e950e394c4b332bcdd112aa566010a9f9c95814844a7468325290aabfd9"}, + {file = "ruff-0.1.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9bd4025b9c5b429a48280785a2b71d479798a69f5c2919e7d274c5f4b32c3607"}, + {file = "ruff-0.1.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1ad00662305dcb1e987f5ec214d31f7d6a062cae3e74c1cbccef15afd96611d"}, + {file = "ruff-0.1.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4b077ce83f47dd6bea1991af08b140e8b8339f0ba8cb9b7a484c30ebab18a23f"}, + {file = "ruff-0.1.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4a88efecec23c37b11076fe676e15c6cdb1271a38f2b415e381e87fe4517f18"}, + {file = "ruff-0.1.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b25093dad3b055667730a9b491129c42d45e11cdb7043b702e97125bcec48a1"}, + {file = "ruff-0.1.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:231d8fb11b2cc7c0366a326a66dafc6ad449d7fcdbc268497ee47e1334f66f77"}, + {file = "ruff-0.1.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:09c415716884950080921dd6237767e52e227e397e2008e2bed410117679975b"}, + {file = "ruff-0.1.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:0f58948c6d212a6b8d41cd59e349751018797ce1727f961c2fa755ad6208ba45"}, + {file = "ruff-0.1.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:190a566c8f766c37074d99640cd9ca3da11d8deae2deae7c9505e68a4a30f740"}, + {file = "ruff-0.1.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6464289bd67b2344d2a5d9158d5eb81025258f169e69a46b741b396ffb0cda95"}, + {file = "ruff-0.1.11-py3-none-win32.whl", hash = "sha256:9b8f397902f92bc2e70fb6bebfa2139008dc72ae5177e66c383fa5426cb0bf2c"}, + {file = "ruff-0.1.11-py3-none-win_amd64.whl", hash = "sha256:eb85ee287b11f901037a6683b2374bb0ec82928c5cbc984f575d0437979c521a"}, + {file = "ruff-0.1.11-py3-none-win_arm64.whl", hash = "sha256:97ce4d752f964ba559c7023a86e5f8e97f026d511e48013987623915431c7ea9"}, + {file = "ruff-0.1.11.tar.gz", hash = "sha256:f9d4d88cb6eeb4dfe20f9f0519bd2eaba8119bde87c3d5065c541dbae2b5a2cb"}, ] [[package]] name = "shellingham" -version = "1.5.0.post1" +version = "1.5.4" description = "Tool to Detect Surrounding Shell" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "shellingham-1.5.0.post1-py2.py3-none-any.whl", hash = "sha256:368bf8c00754fd4f55afb7bbb86e272df77e4dc76ac29dbcbb81a59e9fc15744"}, - {file = "shellingham-1.5.0.post1.tar.gz", hash = "sha256:823bc5fb5c34d60f285b624e7264f4dda254bc803a3774a147bf99c0e3004a28"}, + {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, + {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, ] [[package]] name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -575,7 +473,6 @@ files = [ name = "tabulate" version = "0.9.0" description = "Pretty-print tabular data" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -586,67 +483,78 @@ files = [ [package.extras] widechars = ["wcwidth"] -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] - [[package]] name = "typer" -version = "0.7.0" +version = "0.9.0" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "typer-0.7.0-py3-none-any.whl", hash = "sha256:b5e704f4e48ec263de1c0b3a2387cd405a13767d2f907f44c1a08cbad96f606d"}, - {file = "typer-0.7.0.tar.gz", hash = "sha256:ff797846578a9f2a201b53442aedeb543319466870fbe1c701eab66dd7681165"}, + {file = "typer-0.9.0-py3-none-any.whl", hash = "sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee"}, + {file = "typer-0.9.0.tar.gz", hash = "sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2"}, ] [package.dependencies] click = ">=7.1.1,<9.0.0" colorama = {version = ">=0.4.3,<0.5.0", optional = true, markers = "extra == \"all\""} -rich = {version = ">=10.11.0,<13.0.0", optional = true, markers = "extra == \"all\""} +rich = {version = ">=10.11.0,<14.0.0", optional = true, markers = "extra == \"all\""} shellingham = {version = ">=1.3.0,<2.0.0", optional = true, markers = "extra == \"all\""} +typing-extensions = ">=3.7.4.3" [package.extras] -all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"] doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] -test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] [[package]] name = "types-pyyaml" -version = "6.0.12.8" +version = "6.0.12.12" description = "Typing stubs for PyYAML" -category = "dev" optional = false python-versions = "*" files = [ - {file = "types-PyYAML-6.0.12.8.tar.gz", hash = "sha256:19304869a89d49af00be681e7b267414df213f4eb89634c4495fa62e8f942b9f"}, - {file = "types_PyYAML-6.0.12.8-py3-none-any.whl", hash = "sha256:5314a4b2580999b2ea06b2e5f9a7763d860d6e09cdf21c0e9561daa9cbd60178"}, + {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"}, + {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"}, ] [[package]] name = "types-tabulate" -version = "0.9.0.1" +version = "0.9.0.20240106" description = "Typing stubs for tabulate" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "types-tabulate-0.9.0.1.tar.gz", hash = "sha256:e486292c279f19247865bdabe802419740a0e74b53444e7f7a8009e08129da5d"}, - {file = "types_tabulate-0.9.0.1-py3-none-any.whl", hash = "sha256:be2ea0de05f615ccfcbadf6206aa720e265955eb1de23e343aec9d8bf3fa9aaa"}, + {file = "types-tabulate-0.9.0.20240106.tar.gz", hash = "sha256:c9b6db10dd7fcf55bd1712dd3537f86ddce72a08fd62bb1af4338c7096ce947e"}, + {file = "types_tabulate-0.9.0.20240106-py3-none-any.whl", hash = "sha256:0378b7b6fe0ccb4986299496d027a6d4c218298ecad67199bbd0e2d7e9d335a1"}, ] +[[package]] +name = "typing-extensions" +version = "4.9.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, +] + +[[package]] +name = "win32-setctime" +version = "1.1.0" +description = "A small Python utility to set file creation time on Windows" +optional = false +python-versions = ">=3.5" +files = [ + {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, + {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, +] + +[package.extras] +dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] + [metadata] lock-version = "2.0" -python-versions = "^3.10" -content-hash = "0ce8d63075d58a5f9a05f9def0bdcdd4b8d2354321a65ab006f2d18b7db2d34c" +python-versions = "^3.11" +content-hash = "d0ac7dd4244464318a40e066217a23986bbf6ca44a26e7d98e2487a0fe0a7476" diff --git a/pyproject.toml b/pyproject.toml index 36f31719..90c53e68 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,22 +7,24 @@ readme = "README.md" packages = [{ include = "kodinerds_iptv" }] [tool.poetry.dependencies] -python = "^3.10" +# TODO: Support more Python versions if possible. +python = "^3.11" PyYAML = "^6.0" -httpx = "^0.23.3" -typer = { extras = ["all"], version = "^0.7.0" } +httpx = "^0.26.0" +typer = { extras = ["all"], version = "^0.9.0" } tabulate = "^0.9.0" +aiometer = "^0.5.0" +loguru = "^0.7.2" [tool.poetry.scripts] kn-iptv = "kodinerds_iptv.main:app" [tool.poetry.group.dev.dependencies] -black = "^23.1.0" -ruff = "^0.0.254" -pytest = "^7.2.1" -pytest-cov = "^4.0.0" -types-pyyaml = "^6.0.12.8" -types-tabulate = "^0.9.0.1" +ruff = "^0.1.0" +pytest = "^7.4.0" +pytest-cov = "^4.1.0" +types-pyyaml = "6.0.12.12" +types-tabulate = "0.9.0.20240106" [build-system] requires = ["poetry-core"] @@ -40,27 +42,13 @@ ignore_missing_imports = true [tool.ruff] line-length = 88 select = ["ALL"] -target-version = "py310" -ignore = [ - "ANN101", # flake8-annotations: missing-type-self - "ANN102", # flake8-annotations: missing-type-cls - "COM812", # flake8-commas: trailing-comma-on-bare-tuple-prohibited -] -unfixable = [ - "T201", # flake8-print: print-found - "ERA001", # eradicate: commented-out-code - "F401", # Pyflakes: unused-import - "F841", # Pyflakes: unused-variable -] +target-version = "py311" +ignore = ["ANN101", "ANN102", "COM812", "TD002", "TD003"] +unfixable = ["T201", "ERA001", "F841"] [tool.ruff.per-file-ignores] "__init__.py" = ["D104", "F401"] "tests/*.py" = ["S101"] -"main.py" = ["T201", "T203", "B008"] -"cli_helpers.py" = ["T201", "T203"] -"generate_lists.py" = ["T201", "T203"] -"check_availability.py" = ["T201", "T203"] -"io_utils.py" = ["T201", "T203"] [tool.ruff.pydocstyle] convention = "numpy" diff --git a/sources/dash.yaml b/sources/dash.yaml index 689c43f3..dedc79f8 100644 --- a/sources/dash.yaml +++ b/sources/dash.yaml @@ -1,10 +1,11 @@ --- -main: - - group_title: IPTV-DE - group_title_kodi: Vollprogramm - name: Das Erste HD - quality: hd - tvg_id: DasErste.de - tvg_logo: tv/daserstehd.png - tvg_name: Das Erste HD - url: https://mcdn.daserste.de/daserste/dash/manifest.mpd +- group_title: IPTV-DE + group_titles_kodi: + - Vollprogramm + category: main + name: Das Erste HD + quality: hd + tvg_id: DasErste.de + tvg_logo: tv/daserstehd.png + tvg_name: Das Erste HD + url: https://mcdn.daserste.de/daserste/dash/manifest.mpd diff --git a/sources/radio.yaml b/sources/radio.yaml index 542e8099..1a9d1986 100644 --- a/sources/radio.yaml +++ b/sources/radio.yaml @@ -1,1774 +1,2272 @@ --- -de: - - group_title: Radio-DE - group_title_kodi: Deutschland - name: 100'5 Alemannia - radio: true - tvg_logo: radio/1005dashitradio.png - tvg_name: 100'5 Alemannia - url: https://stream.dashitradio.de/alemannia/mp3-128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: 100'5 DAS HITRADIO - radio: true - tvg_logo: radio/1005dashitradio.png - tvg_name: 100'5 DAS HITRADIO - url: https://stream.dashitradio.de/dashitradio/mp3-128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: 105'5 Spreeradio - radio: true - tvg_logo: radio/1055spreeradio.png - tvg_name: 105'5 Spreeradio - url: http://stream.spreeradio.de/spree-live/mp3-128/konsole - - group_title: Radio-DE - group_title_kodi: Deutschland - name: 105'5 Spreeradio 80er - radio: true - tvg_logo: radio/1055spreeradio.png - tvg_name: 105'5 Spreeradio 80er - url: http://stream.spreeradio.de/spree-80er/mp3-128/konsole - - group_title: Radio-DE - group_title_kodi: Deutschland - name: 105'5 Spreeradio Love - radio: true - tvg_logo: radio/1055spreeradio.png - tvg_name: 105'5 Spreeradio Love - url: http://stream.spreeradio.de/spree-love/mp3-128/konsole - - group_title: Radio-DE - group_title_kodi: Deutschland - name: 105'5 Spreeradio Rock - radio: true - tvg_logo: radio/1055spreeradio.png - tvg_name: 105'5 Spreeradio Rock - url: http://stream.spreeradio.de/spree-rock/mp3-128/konsole - - group_title: Radio-DE - group_title_kodi: Deutschland - name: 105'5 Spreeradio Weihnachtsradio - radio: true - tvg_logo: radio/1055spreeradio.png - tvg_name: 105'5 Spreeradio Weihnachtsradio - url: http://stream.spreeradio.de/spree-event/mp3-128/konsole - - group_title: Radio-DE - group_title_kodi: Deutschland - name: 1LIVE - radio: true - tvg_logo: radio/1live.png - tvg_name: 1LIVE - url: http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: 1LIVE diggi - radio: true - tvg_logo: radio/1livediggi.png - tvg_name: 1LIVE diggi - url: http://wdr-1live-diggi.icecast.wdr.de/wdr/1live/diggi/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: 89.0 RTL - radio: true - tvg_logo: radio/890rtl.png - tvg_name: 89.0 RTL - url: http://stream.89.0rtl.de/live/mp3-256/direktlinkHP - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Absolut Radio - radio: true - tvg_logo: radio/absolutradio.png - tvg_name: Absolut Radio - url: http://stream.absolutradio.de/hq/mp3-160/stream.absolutradio.de - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Absolut relax - radio: true - tvg_logo: radio/absolutrelax.png - tvg_name: Absolut relax - url: http://stream.absolutradio.de/relax/mp3-160/stream.absolutradio.de - - group_title: Radio-DE - group_title_kodi: Deutschland - name: antenne 1 - radio: true - tvg_logo: radio/antenne1.png - tvg_name: antenne 1 - url: http://stream.antenne1.de/a1stg/livestream2.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: ANTENNE BAYERN - radio: true - tvg_logo: radio/antennebayern.png - tvg_name: ANTENNE BAYERN - url: http://mp3channels.webradio.antenne.de:80/antenne - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Antenne Brandenburg - radio: true - tvg_logo: radio/antennebrandenburg.png - tvg_name: Antenne Brandenburg - url: https://dispatcher.rndfnk.com/rbb/antennebrandenburg/live/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: ANTENNE THÜRINGEN - radio: true - tvg_logo: radio/antennethueringen.png - tvg_name: ANTENNE THÜRINGEN - url: http://stream.antennethueringen.de/live/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: AntenneSaar - radio: true - tvg_logo: radio/antennesaar.png - tvg_name: AntenneSaar - url: http://asm.akacast.akamaistream.net/7/495/305516/v1/gnl.akacast.akamaistream.net/asm - - group_title: Radio-DE - group_title_kodi: Deutschland - name: BR24 - radio: true - tvg_logo: radio/br24.png - tvg_name: BR24 - url: https://dispatcher.rndfnk.com/br/br24/live/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: BR24 live - radio: true - tvg_logo: radio/br24live.png - tvg_name: BR24 live - url: https://dispatcher.rndfnk.com/br/br24live/live/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bayern 1 Mittel- und Oberfranken - radio: true - tvg_logo: radio/bayern1.png - tvg_name: Bayern 1 Mittel- und Oberfranken - url: https://dispatcher.rndfnk.com/br/br1/franken/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bayern 1 Mainfranken - radio: true - tvg_logo: radio/bayern1.png - tvg_name: Bayern 1 Mainfranken - url: https://dispatcher.rndfnk.com/br/br1/mainfranken/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bayern 1 Oberbayern - radio: true - tvg_logo: radio/bayern1.png - tvg_name: Bayern 1 Oberbayern - url: https://dispatcher.rndfnk.com/br/br1/obb/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bayern 1 Niederbayern und Oberpfalz - radio: true - tvg_logo: radio/bayern1.png - tvg_name: Bayern 1 Niederbayern und Oberpfalz - url: https://dispatcher.rndfnk.com/br/br1/nbopf/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bayern 1 Schwaben - radio: true - tvg_logo: radio/bayern1.png - tvg_name: Bayern 1 Schwaben - url: https://dispatcher.rndfnk.com/br/br1/schwaben/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bayern 2 Nord - radio: true - tvg_logo: radio/bayern2.png - tvg_name: Bayern 2 Nord - url: https://dispatcher.rndfnk.com/br/br2/nord/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bayern 2 Süd - radio: true - tvg_logo: radio/bayern2.png - tvg_name: Bayern 2 Süd - url: https://dispatcher.rndfnk.com/br/br2/sued/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bayern 3 - radio: true - tvg_logo: radio/bayern3.png - tvg_name: Bayern 3 - url: https://dispatcher.rndfnk.com/br/br3/live/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: bigFM - radio: true - tvg_logo: radio/bigfm.png - tvg_name: bigFM - url: https://streams.bigfm.de/bigfm-deutschland-128-mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: BlackBeats.FM - radio: true - tvg_logo: radio/blackbeatsfm.png - tvg_name: BlackBeats.FM - url: http://stream.blackbeatslive.de/ - - group_title: Radio-DE - group_title_kodi: Deutschland - name: BR Heimat - radio: true - tvg_logo: radio/brheimat.png - tvg_name: BR Heimat - url: https://dispatcher.rndfnk.com/br/brheimat/live/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: BR-Klassik - radio: true - tvg_logo: radio/brklassik.png - tvg_name: BR-Klassik - url: https://dispatcher.rndfnk.com/br/brklassik/live/mp3/high - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bremen Eins - radio: true - tvg_logo: radio/bremeneins.png - tvg_name: Bremen Eins - url: https://dispatcher.rndfnk.com/rb/bremeneins/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bremen Vier - radio: true - tvg_logo: radio/bremenvier.png - tvg_name: Bremen Vier - url: https://dispatcher.rndfnk.com/rb/bremenvier/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bremen Vier rockt - radio: true - tvg_logo: radio/bremenvier.png - tvg_name: Bremen Vier rockt - url: https://icecast.radiobremen.de/rb/bremenvier/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Bremen Zwei - radio: true - tvg_logo: radio/bremenzwei.png - tvg_name: Bremen Zwei - url: https://dispatcher.rndfnk.com/rb/bremenzwei/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Campusradio Köln (Kölncampus) - radio: true - tvg_logo: radio/koelncampus.png - tvg_name: Campusradio Köln (Kölncampus) - url: http://koelncampus.uni-koeln.de:80/hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Campusradio Münster (Radio Q) - radio: true - tvg_logo: radio/radioq.png - tvg_name: Campusradio Münster (Radio Q) - url: https://rqstream.radioq.de/stream/192.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Campusradio Paderborn (L'UniCo) - radio: true - tvg_logo: radio/lunico.png - tvg_name: Campusradio Paderborn (L'UniCo) - url: http://icecast.l-uni.co:8001/lunico_high_mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Campusradio Bielefeld (Hertz 87.9) - radio: true - tvg_logo: radio/hertz879.png - tvg_name: Campusradio Bielefeld (Hertz 87.9) - url: http://stream.radiohertz.de/hertz-hq.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DASDING - radio: true - tvg_logo: radio/dasding.png - tvg_name: DASDING - url: https://dispatcher.rndfnk.com/swr/dasding/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DELUXE 80S EXTREME - radio: true - tvg_logo: radio/deluxeradio.png - tvg_name: DELUXE 80S EXTREME - url: https://audiostreams.deluxemusic.tv/80s/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DELUXE RCK Radio - radio: true - tvg_logo: radio/deluxeradio.png - tvg_name: DELUXE RCK Radio - url: https://audiostreams.deluxemusic.tv/rck/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DELUXE CHEFSESSEL by WAGNER - radio: true - tvg_logo: radio/deluxeradio.png - tvg_name: DELUXE CHEFSESSEL by WAGNER - url: https://audiostreams.deluxemusic.tv/chefsessel/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DELUXE EASY - radio: true - tvg_logo: radio/deluxeeasy.png - tvg_name: DELUXE EASY - url: https://audiostreams.deluxemusic.tv/easy/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DELUXE LOUNGE RADIO - radio: true - tvg_logo: radio/deluxeloungeradio.png - tvg_name: DELUXE LOUNGE RADIO - url: https://audiostreams.deluxemusic.tv/lounge/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DELUXE MUSIC RADIO - radio: true - tvg_logo: radio/deluxemusicradio.png - tvg_name: DELUXE MUSIC RADIO - url: https://audiostreams.deluxemusic.tv/music/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DELUXE NEW ARRIVALS - radio: true - tvg_logo: radio/deluxeradio.png - tvg_name: DELUXE NEW ARRIVALS - url: https://audiostreams.deluxemusic.tv/arrivals/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DELUXE TOP 40 - radio: true - tvg_logo: radio/deluxeradio.png - tvg_name: DELUXE TOP 40 - url: https://audiostreams.deluxemusic.tv/top40/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Deutschlandfunk - radio: true - tvg_logo: radio/deutschlandfunk.png - tvg_name: Deutschlandfunk - url: https://st01.sslstream.dlf.de/dlf/01/high/aac/stream.aac - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Deutschlandfunk Kultur - radio: true - tvg_logo: radio/deutschlandfunkkultur.png - tvg_name: Deutschlandfunk Kultur - url: https://st02.sslstream.dlf.de/dlf/02/high/aac/stream.aac - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Deutschlandfunk Nova - radio: true - tvg_logo: radio/deutschlandfunknova.png - tvg_name: Deutschlandfunk Nova - url: https://st03.sslstream.dlf.de/dlf/03/high/aac/stream.aac - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Deutschlandradio Dokumente und Debatten - radio: true - tvg_logo: radio/deutschlandradiodud.png - tvg_name: Deutschlandradio Dokumente und Debatten - url: https://st04.sslstream.dlf.de/dlf/04/high/aac/stream.aac - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DIE NEUE 107.7 - radio: true - tvg_logo: radio/dieneue1077.png - tvg_name: DIE NEUE 107.7 - url: http://dieneue1077.cast.addradio.de/dieneue1077/simulcast/high/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DELUXE DISCO - radio: true - tvg_logo: radio/deluxeradio.png - tvg_name: DELUXE DISCO - url: https://audiostreams.deluxemusic.tv/disco/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: domradio.de - radio: true - tvg_logo: radio/domradiode.png - tvg_name: domradio.de - url: https://dom.audiostream.io/domradio/1000/mp3/128/domradio-rp.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: DONAU 3 FM - radio: true - tvg_logo: radio/donau3fm.png - tvg_name: DONAU 3 FM - url: http://mp3.donau3fm.c.nmdn.net/donau3fm/live.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: egoFM - radio: true - tvg_logo: radio/egofm.png - tvg_name: egoFM - url: http://mp3ad.egofm.c.nmdn.net/ps-egofm_192/livestream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: ERF Plus - radio: true - tvg_logo: radio/erfplus.png - tvg_name: ERF Plus - url: http://erf1a64-ice-edge-1106-fra-eco-cdn.cast.addradio.de/erf1a64/live/mp3/high - - group_title: Radio-DE - group_title_kodi: Deutschland - name: ERF Pop - radio: true - tvg_logo: radio/erfpop.png - tvg_name: ERF Pop - url: http://erf1068-ice-edge-1103-fra-eco-cdn.cast.addradio.de/erf1068/live/mp3/high - - group_title: Radio-DE - group_title_kodi: Deutschland - name: FluxFM - radio: true - tvg_logo: radio/fluxfm.png - tvg_name: FluxFM - url: http://streams.fluxfm.de/live/mp3-320/audio/ - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Fritz - radio: true - tvg_logo: radio/fritz.png - tvg_name: Fritz - url: https://dispatcher.rndfnk.com/rbb/fritz/live/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: harmony.fm - radio: true - tvg_logo: radio/harmonyfm.png - tvg_name: harmony.fm - url: https://mp3.harmonyfm.de/harmonyfm/hqlivestream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: HIT RADIO FFH - radio: true - tvg_logo: radio/hitradioffh.png - tvg_name: HIT RADIO FFH - url: http://mp3.ffh.de/radioffh/hqlivestream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: hr-info - radio: true - tvg_logo: radio/hrinfo.png - tvg_name: hr-info - url: https://dispatcher.rndfnk.com/hr/hrinfo/live/mp3/high - - group_title: Radio-DE - group_title_kodi: Deutschland - name: hr1 - radio: true - tvg_logo: radio/hr1.png - tvg_name: hr1 - url: https://dispatcher.rndfnk.com/hr/hr1/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: hr2-kultur - radio: true - tvg_logo: radio/hr2kultur.png - tvg_name: hr2-kultur - url: https://dispatcher.rndfnk.com/hr/hr2/live/mp3/256/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: hr3 - radio: true - tvg_logo: radio/hr3.png - tvg_name: hr3 - url: https://dispatcher.rndfnk.com/hr/hr3/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: hr4 - radio: true - tvg_logo: radio/hr4.png - tvg_name: hr4 - url: https://dispatcher.rndfnk.com/hr/hr4/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: JAM FM - radio: true - tvg_logo: radio/jamfm.png - tvg_name: JAM FM - url: http://stream.jam.fm/jamfm-live/mp3-128/konsole/ - - group_title: Radio-DE - group_title_kodi: Deutschland - name: JAM FM Black Label - radio: true - tvg_logo: radio/jamfm.png - tvg_name: JAM FM Black Label - url: http://stream.jam.fm/jamfm-bl/mp3-128/konsole/ - - group_title: Radio-DE - group_title_kodi: Deutschland - name: JAM FM New Music Radio - radio: true - tvg_logo: radio/jamfm.png - tvg_name: JAM FM New Music Radio - url: http://stream.jam.fm/jamfm-nmr/mp3-128/konsole/ - - group_title: Radio-DE - group_title_kodi: Deutschland - name: JazzRadio Berlin - radio: true - tvg_logo: radio/jazzradio.png - tvg_name: JazzRadio Berlin - url: http://streaming.radio.co:80/s774887f7b/listen - - group_title: Radio-DE - group_title_kodi: Deutschland - name: JUKEBOX RADIO - radio: true - tvg_logo: radio/deluxeradio.png - tvg_name: JUKEBOX RADIO - url: https://audiostreams.deluxemusic.tv/jukebox/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: WDR Die Maus - radio: true - tvg_logo: radio/mausradio.png - tvg_name: WDR Die Maus - url: https://wdr-diemaus-live.icecastssl.wdr.de/wdr/diemaus/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: LandesWelle Thüringen - radio: true - tvg_logo: radio/landeswellethueringen.png - tvg_name: LandesWelle Thüringen - url: http://stream.landeswelle.de/lwt/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: MDR AKTUELL - radio: true - tvg_logo: radio/mdraktuell.png - tvg_name: MDR AKTUELL - url: http://mdr-284340-0.cast.mdr.de/mdr/284340/0/mp3/high/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: MDR JUMP - radio: true - tvg_logo: radio/mdrjump.png - tvg_name: MDR JUMP - url: http://mdr-284320-0.cast.mdr.de/mdr/284320/0/mp3/high/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: MDR KLASSIK - radio: true - tvg_logo: radio/mdrklassik.png - tvg_name: MDR KLASSIK - url: http://mdr-284350-0.cast.mdr.de/mdr/284350/0/mp3/high/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: MDR KULTUR - radio: true - tvg_logo: radio/mdrkultur.png - tvg_name: MDR KULTUR - url: http://mdr-284310-0.cast.mdr.de/mdr/284310/0/mp3/high/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: MDR SACHSEN - radio: true - tvg_logo: radio/mdrsachsen.png - tvg_name: MDR SACHSEN - url: http://mdr-284280-0.cast.mdr.de/mdr/284280/0/mp3/high/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: MDR SPUTNIK - radio: true - tvg_logo: radio/mdrsputnik.png - tvg_name: MDR SPUTNIK - url: http://mdr-284330-0.cast.mdr.de/mdr/284330/0/mp3/high/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: MDR THÜRINGEN - radio: true - tvg_logo: radio/mdrthueringen.png - tvg_name: MDR THÜRINGEN - url: http://mdr-284300-0.cast.mdr.de/mdr/284300/0/mp3/high/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Metal Only - radio: true - tvg_logo: radio/metalonly.png - tvg_name: Metal Only - url: http://metal-only.streampanel.cloud/stream - - group_title: Radio-DE - group_title_kodi: Deutschland - name: multicult.fm - radio: true - tvg_logo: radio/multicultfm.png - tvg_name: multicult.fm - url: http://stream.multicult.fm:8000/hifi - - group_title: Radio-DE - group_title_kodi: Deutschland - name: N-JOY - radio: true - tvg_logo: radio/njoy.png - tvg_name: N-JOY - url: https://dispatcher.rndfnk.com/ndr/njoy/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: NDR 1 Niedersachsen - radio: true - tvg_logo: radio/ndr1niedersachsen.png - tvg_name: NDR 1 Niedersachsen - url: https://dispatcher.rndfnk.com/ndr/ndr1niedersachsen/hannover/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: NDR 1 Radio MV - radio: true - tvg_logo: radio/ndr1radiomv.png - tvg_name: NDR 1 Radio MV - url: https://dispatcher.rndfnk.com/ndr/ndr1radiomv/schwerin/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: NDR 1 Welle Nord - radio: true - tvg_logo: radio/ndr1wellenord.png - tvg_name: NDR 1 Welle Nord - url: https://dispatcher.rndfnk.com/ndr/ndr1wellenord/kiel/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: NDR 2 - radio: true - tvg_logo: radio/ndr2.png - tvg_name: NDR 2 - url: https://dispatcher.rndfnk.com/ndr/ndr2/niedersachsen/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: NDR 90.3 - radio: true - tvg_logo: radio/ndr903.png - tvg_name: NDR 90.3 - url: https://dispatcher.rndfnk.com/ndr/ndr903/hamburg/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: NDR Blue - radio: true - tvg_logo: radio/ndrblue.png - tvg_name: NDR Blue - url: https://dispatcher.rndfnk.com/ndr/ndrblue/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: NDR Info - radio: true - tvg_logo: radio/ndrinfo.png - tvg_name: NDR Info - url: https://dispatcher.rndfnk.com/ndr/ndrinfo/niedersachsen/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: NDR Info Spezial - radio: true - tvg_logo: radio/ndrinfospezial.png - tvg_name: NDR Info Spezial - url: https://dispatcher.rndfnk.com/ndr/ndrinfospezial/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: NDR kultur - radio: true - tvg_logo: radio/ndrkultur.png - tvg_name: NDR kultur - url: https://dispatcher.rndfnk.com/ndr/ndrkultur/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: NDR Plus - radio: true - tvg_logo: radio/ndrplus.png - tvg_name: NDR Plus - url: https://dispatcher.rndfnk.com/ndr/ndrplus/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: nice - radio: true - tvg_logo: radio/nice.png - tvg_name: nice - url: https://ice.cr5.streamzilla.xlcdn.com:8000/sz%3Dnice-broadcast-media-gmbh%3Dniceradio1-mp3-256 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: oldenburg eins - radio: true - tvg_logo: radio/oldenburgeins.png - tvg_name: oldenburg eins - url: http://radio.oeins.de:8000/oeins - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Ostseewelle HIT-RADIO - radio: true - tvg_logo: radio/ostseewelle.png - tvg_name: Ostseewelle HIT-RADIO - url: http://mp3.ostseewelle.c.nmdn.net/ostseewellelive/livestream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: planet radio - radio: true - tvg_logo: radio/planetradio.png - tvg_name: planet radio - url: http://mp3.planetradio.de/planetradio/hqlivestream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: PULS - radio: true - tvg_logo: radio/puls.png - tvg_name: PULS - url: https://dispatcher.rndfnk.com/br/puls/live/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Radio 7 - radio: true - tvg_logo: radio/radio7.png - tvg_name: Radio 7 - url: https://edge04.streamonkey.net/radio7-dab - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Radio 90.1 - radio: true - tvg_logo: radio/radio901.png - tvg_name: Radio 90.1 - url: http://mp3.radiomg.c.nmdn.net/radiomg/livestream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: radio B2 - radio: true - tvg_logo: radio/radiob2.png - tvg_name: radio B2 - url: http://mp3ad.radiob2.c.nmdn.net/fs_radiob2regional/livestream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! national - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! national - url: https://bob.hoerradar.de/radiobob-national-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! NRW - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! NRW - url: https://bob.hoerradar.de/bob-live-nrw-mitte-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Schleswig-Holstein - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Schleswig-Holstein - url: https://bob.hoerradar.de/radiobob-shlive-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Hessen - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Hessen - url: https://bob.hoerradar.de/radiobob-live-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Metal - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Metal - url: https://bob.hoerradar.de/radiobob-metal-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Alternative Rock - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Alternative Rock - url: https://bob.hoerradar.de/radiobob-alternativerock-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Classic Rock - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Classic Rock - url: https://bob.hoerradar.de/radiobob-classicrock-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! ACDC - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! ACDC - url: https://bob.hoerradar.de/radiobob-acdc-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Deutschrock - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Deutschrock - url: https://bob.hoerradar.de/radiobob-deutschrock-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Wacken - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Wacken - url: https://bob.hoerradar.de/radiobob-wacken-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Grunge - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Grunge - url: https://bob.hoerradar.de/radiobob-grunge-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! 90er Rock - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! 90er Rock - url: https://bob.hoerradar.de/radiobob-90srock-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Hardrock - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Hardrock - url: https://bob.hoerradar.de/radiobob-hardrock-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Metalcore - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Metalcore - url: https://bob.hoerradar.de/radiobob-metalcore-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Metallica - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Metallica - url: https://bob.hoerradar.de/radiobob-metallica-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Tobias Sammet Rockshow - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Tobias Sammet Rockshow - url: https://bob.hoerradar.de/radiobob-sammet-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Mittelalter Rock - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Mittelalter Rock - url: https://bob.hoerradar.de/radiobob-mittelalter-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Symphonic Metal - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Symphonic Metal - url: https://bob.hoerradar.de/radiobob-symphmetal-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Punk - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Punk - url: https://bob.hoerradar.de/radiobob-punk-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Kuschelrock - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Kuschelrock - url: https://bob.hoerradar.de/radiobob-kuschelrock-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Death Metal - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Death Metal - url: https://bob.hoerradar.de/radiobob-deathmetal-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Rockparty - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Rockparty - url: https://bob.hoerradar.de/radiobob-rockparty-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Southern Rock - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Southern Rock - url: https://bob.hoerradar.de/radiobob-southernrock-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Der Dunkle Parabelritter - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Der Dunkle Parabelritter - url: https://bob.hoerradar.de/radiobob-dunklepritter-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Newcomer - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Newcomer - url: https://bob.hoerradar.de/radiobob-newcomer-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Gothic Rock - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Gothic Rock - url: https://bob.hoerradar.de/radiobob-gothic-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Best of Rock - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Best of Rock - url: https://bob.hoerradar.de/radiobob-bestofrock-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Festival - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Festival - url: https://bob.hoerradar.de/radiobob-festival-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Unplugged - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Unplugged - url: https://bob.hoerradar.de/radiobob-chillout-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Rockabilly - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Rockabilly - url: https://bob.hoerradar.de/radiobob-rockabilly-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Harte Saite - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Harte Saite - url: https://bob.hoerradar.de/radiobob-hartesaite-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Singer-Songwriter - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Singer-Songwriter - url: https://bob.hoerradar.de/radiobob-singersong-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO BOB! Rock Hits - radio: true - tvg_logo: radio/radiobob.png - tvg_name: RADIO BOB! Rock Hits - url: https://bob.hoerradar.de/radiobob-rockhits-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Radio Brocken - radio: true - tvg_logo: radio/radiobrocken.png - tvg_name: Radio Brocken - url: http://stream.radiobrocken.de/live/mp3-256 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO ENERGY Sachsen - radio: true - tvg_logo: radio/radioenergysachsen.png - tvg_name: RADIO ENERGY Sachsen - url: https://scdn.nrjaudio.fm/adwz1/de/33013/mp3_128.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO ENERGY Stuttgart - radio: true - tvg_logo: radio/radioenergystuttgart.png - tvg_name: RADIO ENERGY Stuttgart - url: https://scdn.nrjaudio.fm/adwz1/de/33005/mp3_128.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RADIO ENERGY Bremen - radio: true - tvg_logo: radio/radioenergybremen.png - tvg_name: RADIO ENERGY Bremen - url: http://ffn-stream24.radiohost.de/energybremen_mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Radio Horeb - radio: true - tvg_logo: radio/radiohoreb.png - tvg_name: Radio Horeb - url: http://rs16.stream24.org:8000/horeb.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Radio Paloma - radio: true - tvg_logo: radio/radiopaloma.png - tvg_name: Radio Paloma - url: http://pool.radiopaloma.de/RADIOPALOMA.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Radio Regenbogen - radio: true - tvg_logo: radio/radioregenbogen.png - tvg_name: Radio Regenbogen - url: http://streams.regenbogen.de/rr-mannheim-128-mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: radio SAW - radio: true - tvg_logo: radio/radiosaw.png - tvg_name: radio SAW - url: http://stream.radiosaw.de - - group_title: Radio-DE - group_title_kodi: Deutschland - name: radio TOP 40 - radio: true - tvg_logo: radio/radiotop40.png - tvg_name: radio TOP 40 - url: http://stream.radiotop40.de/live/mp3-192 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Radio TEDDY - radio: true - tvg_logo: radio/radioteddy.png - tvg_name: Radio TEDDY - url: http://streamtdy.ir-media-tec.com/live/mp3-128/web/play.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: rbb Inforadio - radio: true - tvg_logo: radio/rbbInforadio.png - tvg_name: rbb Inforadio - url: https://dispatcher.rndfnk.com/rbb/inforadio/live/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: rbbKultur - radio: true - tvg_logo: radio/rbbKultur.png - tvg_name: rbbKultur - url: https://dispatcher.rndfnk.com/rbb/rbbkultur/live/mp3/high - - group_title: Radio-DE - group_title_kodi: Deutschland - name: radioeins - radio: true - tvg_logo: radio/radioeins.png - tvg_name: radioeins - url: https://dispatcher.rndfnk.com/rbb/radioeins/live/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: rbb 88.8 - radio: true - tvg_logo: radio/rbb888.png - tvg_name: rbb 88.8 - url: https://dispatcher.rndfnk.com/rbb/rbb888/live/mp3/mid - - group_title: Radio-DE - group_title_kodi: Deutschland - name: reboot.fm - radio: true - tvg_logo: radio/rebootfm.png - tvg_name: reboot.fm - url: http://87.118.122.220:8002/stream - - group_title: Radio-DE - group_title_kodi: Deutschland - name: ROCK ANTENNE - radio: true - tvg_logo: radio/rockantenne.png - tvg_name: ROCK ANTENNE - url: http://mp3channels.webradio.rockantenne.de/rockantenne - - group_title: Radio-DE - group_title_kodi: Deutschland - name: ROCK ANTENNE HEAVY-METAL - radio: true - tvg_logo: radio/rockantenne.png - tvg_name: ROCK ANTENNE HEAVY-METAL - url: http://stream.rockantenne.de/heavy-metal - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Rockland Radio - radio: true - tvg_logo: radio/rocklandradio.png - tvg_name: Rockland Radio - url: https://stream.rockland.de/rockland.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: ROCKLAND.FM - radio: true - tvg_logo: radio/rocklandfm.png - tvg_name: ROCKLAND.FM - url: http://stream.rockland-digital.de - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RPR1 - radio: true - tvg_logo: radio/rpr1.png - tvg_name: RPR1 - url: http://streams.rpr1.de/rpr-koeln-128-mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: RTF.3 - radio: true - tvg_logo: radio/rtf3.png - tvg_name: RTF.3 - url: http://37.187.93.104:8414/stream - - group_title: Radio-DE - group_title_kodi: Deutschland - name: SR 1 Europawelle - radio: true - tvg_logo: radio/sr1europawelle.png - tvg_name: SR 1 Europawelle - url: http://sr1m.akacast.akamaistream.net/7/725/142685/v1/gnl.akacast.akamaistream.net/sr1m - - group_title: Radio-DE - group_title_kodi: Deutschland - name: SR 2 Kulturradio - radio: true - tvg_logo: radio/sr2kulturradio.png - tvg_name: SR 2 Kulturradio - url: http://sr2m.akacast.akamaistream.net/7/375/142686/v1/gnl.akacast.akamaistream.net/sr2m - - group_title: Radio-DE - group_title_kodi: Deutschland - name: SR 3 Saarlandwelle - radio: true - tvg_logo: radio/sr3saarlandwelle.png - tvg_name: SR 3 Saarlandwelle - url: http://sr3m.akacast.akamaistream.net/7/722/142687/v1/gnl.akacast.akamaistream.net/sr3m - - group_title: Radio-DE - group_title_kodi: Deutschland - name: sunshine live - radio: true - tvg_logo: radio/sunshinelive.png - tvg_name: sunshine live - url: http://sunshinelive.hoerradar.de/sunshinelive-live-mp3-hq - - group_title: Radio-DE - group_title_kodi: Deutschland - name: SWR1 Baden-Württemberg - radio: true - tvg_logo: radio/swr1.png - tvg_name: SWR1 Baden-Württemberg - url: https://dispatcher.rndfnk.com/swr/swr1/bw/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: SWR1 Rheinland-Pfalz - radio: true - tvg_logo: radio/swr1.png - tvg_name: SWR1 Rheinland-Pfalz - url: https://dispatcher.rndfnk.com/swr/swr1/rp/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: SWR2 - radio: true - tvg_logo: radio/swr2.png - tvg_name: SWR2 - url: https://dispatcher.rndfnk.com/swr/swr2/live/mp3/256/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: SWR3 - radio: true - tvg_logo: radio/swr3.png - tvg_name: SWR3 - url: https://dispatcher.rndfnk.com/swr/swr3/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: SWR4 Baden-Württemberg - radio: true - tvg_logo: radio/swr4.png - tvg_name: SWR4 Baden-Württemberg - url: https://dispatcher.rndfnk.com/swr/swr4/bw/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: SWR4 Rheinland-Pfalz - radio: true - tvg_logo: radio/swr4.png - tvg_name: SWR4 Rheinland-Pfalz - url: https://dispatcher.rndfnk.com/swr/swr4/rp/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: UNSERDING - radio: true - tvg_logo: radio/unserding.png - tvg_name: UNSERDING - url: http://udm.akacast.akamaistream.net/7/384/142688/v1/gnl.akacast.akamaistream.net/udm - - group_title: Radio-DE - group_title_kodi: Deutschland - name: WDR 2 - radio: true - tvg_logo: radio/wdr2.png - tvg_name: WDR 2 - url: http://wdr-wdr2-rheinland.icecast.wdr.de/wdr/wdr2/rheinland/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: WDR 3 - radio: true - tvg_logo: radio/wdr3.png - tvg_name: WDR 3 - url: http://wdr-wdr3-live.icecast.wdr.de/wdr/wdr3/live/mp3/256/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: WDR 4 - radio: true - tvg_logo: radio/wdr4.png - tvg_name: WDR 4 - url: http://wdr-wdr4-live.icecast.wdr.de/wdr/wdr4/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: WDR 5 - radio: true - tvg_logo: radio/wdr5.png - tvg_name: WDR 5 - url: http://wdr-wdr5-live.icecast.wdr.de/wdr/wdr5/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: YOU FM - radio: true - tvg_logo: radio/youfm.png - tvg_name: YOU FM - url: https://dispatcher.rndfnk.com/hr/youfm/live/mp3/128/stream.mp3 - - group_title: Radio-DE - group_title_kodi: Deutschland - name: Radio 21 Hannover - radio: true - tvg_logo: radio/radio21hannover.png - tvg_name: Radio 21 Hannover - url: https://radio21.streamabc.net/radio21-hannover-mp3-192-3735655 -at: - - group_title: Radio-AT - group_title_kodi: Österreich - name: FM4 - radio: true - tvg_logo: radio/fm4.png - tvg_name: FM4 - url: https://orf-live.ors-shoutcast.at/fm4-q2a - - group_title: Radio-AT - group_title_kodi: Österreich - name: Hitradio Ö3 - radio: true - tvg_logo: radio/hitradiooe3.png - tvg_name: Hitradio Ö3 - url: https://orf-live.ors-shoutcast.at/oe3-q2a - - group_title: Radio-AT - group_title_kodi: Österreich - name: Klassik Radio - radio: true - tvg_logo: radio/klassikradio.png - tvg_name: Klassik Radio - url: https://edge61.streams.klassikradio.de/klassikradio-oesterreich/stream/mp3 - - group_title: Radio-AT - group_title_kodi: Österreich - name: KRONEHIT - radio: true - tvg_logo: radio/kronehit.png - tvg_name: KRONEHIT - url: http://onair.krone.at:80/kronehit.mp3 - - group_title: Radio-AT - group_title_kodi: Österreich - name: KRONEHIT Dance - radio: true - tvg_logo: radio/kronehit.png - tvg_name: KRONEHIT Dance - url: http://onair.krone.at:80/kronehit-dance.mp3 - - group_title: Radio-AT - group_title_kodi: Österreich - name: Life Radio - radio: true - tvg_logo: radio/liferadio.png - tvg_name: Life Radio - url: https://stream.liferadio.at/liferadio/mp3-192 - - group_title: Radio-AT - group_title_kodi: Österreich - name: Orange 94.0 - radio: true - tvg_logo: radio/orange94.0.png - tvg_name: Orange 94.0 - url: https://securestream.o94.at/live.mp3 - - group_title: Radio-AT - group_title_kodi: Österreich - name: Ö1 - radio: true - tvg_logo: radio/oe1.png - tvg_name: Ö1 - url: https://orf-live.ors-shoutcast.at/oe1-q2a - - group_title: Radio-AT - group_title_kodi: Österreich - name: Ö1 Campus - radio: true - tvg_logo: radio/oe1.png - tvg_name: Ö1 Campus - url: https://orf-live.ors-shoutcast.at/campus-q2a - - group_title: Radio-AT - group_title_kodi: Österreich - name: Radio Niederösterreich - radio: true - tvg_logo: radio/radioniederoesterreich.png - tvg_name: Radio Niederösterreich - url: https://orf-live.ors-shoutcast.at/noe-q2a - - group_title: Radio-AT - group_title_kodi: Österreich - name: Radio Steiermark - radio: true - tvg_logo: radio/radiosteiermark.png - tvg_name: Radio Steiermark - url: https://orf-live.ors-shoutcast.at/stm-q2a - - group_title: Radio-AT - group_title_kodi: Österreich - name: Radio Tirol - radio: true - tvg_logo: radio/radiotirol.png - tvg_name: Radio Tirol - url: https://orf-live.ors-shoutcast.at/tir-q2a - - group_title: Radio-AT - group_title_kodi: Österreich - name: Radio Wien - radio: true - tvg_logo: radio/radiowien.png - tvg_name: Radio Wien - url: https://orf-live.ors-shoutcast.at/wie-q2a - - group_title: Radio-AT - group_title_kodi: Österreich - name: U1 Tirol - radio: true - tvg_logo: radio/u1tirol.png - tvg_name: U1 Tirol - url: https://live.u1-radio.at/stream.mp3 -ch: - - group_title: Radio-CH - group_title_kodi: Schweiz - name: Radio SRF 1 - radio: true - tvg_logo: radio/radiosrf1.png - tvg_name: Radio SRF 1 - url: http://stream.srg-ssr.ch/m/drs1/mp3_128 - - group_title: Radio-CH - group_title_kodi: Schweiz - name: Radio SRF 2 Kultur - radio: true - tvg_logo: radio/radiosrf2kultur.png - tvg_name: Radio SRF 2 Kultur - url: http://stream.srg-ssr.ch/m/drs2/mp3_128 - - group_title: Radio-CH - group_title_kodi: Schweiz - name: Radio SRF 3 - radio: true - tvg_logo: radio/radiosrf3.png - tvg_name: Radio SRF 3 - url: http://stream.srg-ssr.ch/m/drs3/mp3_128 - - group_title: Radio-CH - group_title_kodi: Schweiz - name: Radio SRF 4 News - radio: true - tvg_logo: radio/radiosrf4news.png - tvg_name: Radio SRF 4 News - url: http://stream.srg-ssr.ch/m/drs4news/mp3_128 - - group_title: Radio-CH - group_title_kodi: Schweiz - name: Radio SRF Musikwelle - radio: true - tvg_logo: radio/radiosrfmusikwelle.png - tvg_name: Radio SRF Musikwelle - url: http://stream.srg-ssr.ch/m/drsmw/mp3_128 - - group_title: Radio-CH - group_title_kodi: Schweiz - name: Radio SRF Virus - radio: true - tvg_logo: radio/radiosrfvirus.png - tvg_name: Radio SRF Virus - url: http://stream.srg-ssr.ch/m/drsvirus/mp3_128 - - group_title: Radio-CH - group_title_kodi: Schweiz - name: Radio Swiss Pop - radio: true - tvg_logo: radio/radioswisspop.png - tvg_name: Radio Swiss Pop - url: http://stream.srg-ssr.ch/m/rsp/mp3_128 - - group_title: Radio-CH - group_title_kodi: Schweiz - name: Radio Swiss Classic - radio: true - tvg_logo: radio/radioswissclassic.png - tvg_name: Radio Swiss Classic - url: http://stream.srg-ssr.ch/m/rsc_de/mp3_128 - - group_title: Radio-CH - group_title_kodi: Schweiz - name: Radio Swiss Jazz - radio: true - tvg_logo: radio/radioswissjazz.png - tvg_name: Radio Swiss Jazz - url: http://stream.srg-ssr.ch/m/rsj/mp3_128 - - group_title: Radio-CH - group_title_kodi: Schweiz - name: Radio Zürisee - radio: true - tvg_logo: radio/radiozuerisee.png - tvg_name: Radio Zürisee - url: http://mp3.radio.ch/radiozuerisee128k -uk: - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Asian Network - radio: true - tvg_logo: radio/bbcasiannetwork.png - tvg_name: BBC Asian Network - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_asianet_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio 1 - radio: true - tvg_logo: radio/bbcradio1.png - tvg_name: BBC Radio 1 - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio 1Xtra - radio: true - tvg_logo: radio/bbcradio1xtra.png - tvg_name: BBC Radio 1Xtra - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1xtra_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio 2 - radio: true - tvg_logo: radio/bbcradio2.png - tvg_name: BBC Radio 2 - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio2_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio 3 - radio: true - tvg_logo: radio/bbcradio3.png - tvg_name: BBC Radio 3 - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio3_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio 4 - radio: true - tvg_logo: radio/bbcradio4.png - tvg_name: BBC Radio 4 - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4fm_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio 4 Extra - radio: true - tvg_logo: radio/bbcradio4extra.png - tvg_name: BBC Radio 4 Extra - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4extra_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio 5 Live - radio: true - tvg_logo: radio/bbcradio5live.png - tvg_name: BBC Radio 5 Live - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio5live_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio 6 Music - radio: true - tvg_logo: radio/bbcradio6music.png - tvg_name: BBC Radio 6 Music - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_6music_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio Cymru - radio: true - tvg_logo: radio/bbcradiocymru.png - tvg_name: BBC Radio Cymru - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_cymru_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio Foyle - radio: true - tvg_logo: radio/bbcradiofoyle.png - tvg_name: BBC Radio Foyle - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_foyle_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio nan Gàidheal - radio: true - tvg_logo: radio/bbcradionangaidheal.png - tvg_name: BBC Radio nan Gàidheal - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_nangaidheal_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio Scotland - radio: true - tvg_logo: radio/bbcradioscotland.png - tvg_name: BBC Radio Scotland - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_scotlandfm_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio Ulster - radio: true - tvg_logo: radio/bbcradioulster.png - tvg_name: BBC Radio Ulster - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_ulster_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC Radio Wales - radio: true - tvg_logo: radio/bbcradiowales.png - tvg_name: BBC Radio Wales - url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_walesmw_mf_p - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: BBC World Service - radio: true - tvg_logo: radio/bbcworldservice.png - tvg_name: BBC World Service - url: http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-eieuk - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: Classic FM - radio: true - tvg_logo: radio/classicfm.png - tvg_name: Classic FM - url: http://media-ice.musicradio.com:80/ClassicFMMP3 - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: Scala - radio: true - tvg_logo: radio/scala.png - tvg_name: Scala - url: https://stream-mz.planetradio.co.uk/scalahigh.aac - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: Classical 1 - radio: true - tvg_logo: radio/classical1.png - tvg_name: Classical 1 - url: http://185.80.221.113:8500/stream - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: LBC (national) - radio: true - tvg_logo: radio/lbc.png - tvg_name: LBC (national) - url: https://media-ssl.musicradio.com/LBCUK - - group_title: Radio-UK - group_title_kodi: Großbritannien - name: Times Radio - radio: true - tvg_logo: radio/timesradio.png - tvg_name: Times Radio - url: http://timesradio.wireless.radio/stream?ref=rf -fr: - - group_title: Radio-FR - group_title_kodi: Frankreich - name: Mouv' - radio: true - tvg_logo: radio/mouv.png - tvg_name: Mouv' - url: http://direct.mouv.fr/live/mouv-midfi.mp3 - - group_title: Radio-FR - group_title_kodi: Frankreich - name: Radio Nova - radio: true - tvg_logo: radio/radionova.png - tvg_name: Radio Nova - url: http://novazz.ice.infomaniak.ch/novazz-128.mp3 -nl: - - group_title: Radio-NL - group_title_kodi: Niederlande - name: HitRadio Veronica - radio: true - tvg_logo: radio/hitradioveronica.png - tvg_name: HitRadio Veronica - url: http://playerservices.streamtheworld.com/api/livestream-redirect/SRGSTR09.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio 538 - radio: true - tvg_logo: radio/radio538.png - tvg_name: Radio 538 - url: https://playerservices.streamtheworld.com/api/livestream-redirect/RADIO538.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio 538 Zomer - radio: true - tvg_logo: radio/radio538.png - tvg_name: Radio 538 Zomer - url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR06.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio 538 Dance Department - radio: true - tvg_logo: radio/radio538.png - tvg_name: Radio 538 Dance Department - url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR01.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio 538 Drops - radio: true - tvg_logo: radio/radio538.png - tvg_name: Radio 538 Drops - url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR08.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio 538 Hitzone - radio: true - tvg_logo: radio/radio538.png - tvg_name: Radio 538 Hitzone - url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR11.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio 538 Ibiza - radio: true - tvg_logo: radio/radio538.png - tvg_name: Radio 538 Ibiza - url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR19.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio 538 Non-Stop - radio: true - tvg_logo: radio/radio538.png - tvg_name: Radio 538 Non-Stop - url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR09.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio 538 Party - radio: true - tvg_logo: radio/radio538.png - tvg_name: Radio 538 Party - url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR16.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio 538 Top 50 Radio - radio: true - tvg_logo: radio/radio538.png - tvg_name: Radio 538 Top 50 Radio - url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR13.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio 538 Verrückte Stunde - radio: true - tvg_logo: radio/radio538.png - tvg_name: Radio 538 Verrückte Stunde - url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR21.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Radio Veronica - radio: true - tvg_logo: radio/radioveronica.png - tvg_name: Radio Veronica - url: http://playerservices.streamtheworld.com/api/livestream-redirect/VERONICA.mp3 - - group_title: Radio-NL - group_title_kodi: Niederlande - name: Sky Radio 101 FM - radio: true - tvg_logo: radio/skyradio101fm.png - tvg_name: Sky Radio 101 FM - url: http://playerservices.streamtheworld.com/api/livestream-redirect/SKYRADIO.mp3 -pl: - - group_title: Radio-PL - group_title_kodi: Polen - name: Planeta FM - radio: true - tvg_logo: radio/planetafm.png - tvg_name: Planeta FM - url: http://pla01.cdn.eurozet.pl:8700/pla-net.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Planeta FM Dope Hits - radio: true - tvg_logo: radio/planetafm.png - tvg_name: Planeta FM Dope Hits - url: http://pla02.cdn.eurozet.pl:8208/PLAHOU.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Planeta FM Electronic Wave - radio: true - tvg_logo: radio/planetafm.png - tvg_name: Planeta FM Electronic Wave - url: http://pla02.cdn.eurozet.pl:8228/PLAEDM.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Planeta FM Good Vibes - radio: true - tvg_logo: radio/planetafm.png - tvg_name: Planeta FM Good Vibes - url: http://pla01.cdn.eurozet.pl:8204/PLACHI.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Planeta FM Indie Day Mood - radio: true - tvg_logo: radio/planetafm.png - tvg_name: Planeta FM Indie Day Mood - url: http://pla02.cdn.eurozet.pl:8230/PLAIDM.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Radio ZET - radio: true - tvg_logo: radio/radiozet.png - tvg_name: Radio ZET - url: http://n-4-14.dcs.redcdn.pl/sc/o2/Eurozet/live/audio.livx?audio=5 - - group_title: Radio-PL - group_title_kodi: Polen - name: Radio ZET 2000 - radio: true - tvg_logo: radio/radiozet.png - tvg_name: Radio ZET 2000 - url: http://zet.cdn.eurozet.pl/ZET200.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Radio ZET 80 - radio: true - tvg_logo: radio/radiozet.png - tvg_name: Radio ZET 80 - url: http://zet.cdn.eurozet.pl/ZET080.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Radio ZET 90 - radio: true - tvg_logo: radio/radiozet.png - tvg_name: Radio ZET 90 - url: http://zet.cdn.eurozet.pl/ZET090.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Radio ZET Dance - radio: true - tvg_logo: radio/radiozet.png - tvg_name: Radio ZET Dance - url: http://zet.cdn.eurozet.pl/ZETDAN.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Radio ZET Hits - radio: true - tvg_logo: radio/radiozet.png - tvg_name: Radio ZET Hits - url: http://zet.cdn.eurozet.pl/ZETHIT.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Radio ZET Love - radio: true - tvg_logo: radio/radiozet.png - tvg_name: Radio ZET Love - url: https://zt.cdn.eurozet.pl/ZETLOV.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Radio ZET Party - radio: true - tvg_logo: radio/radiozet.png - tvg_name: Radio ZET Party - url: http://zet.cdn.eurozet.pl/ZETPAR.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Radio ZET PL - radio: true - tvg_logo: radio/radiozet.png - tvg_name: Radio ZET PL - url: http://zet.cdn.eurozet.pl/ZETPL1.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: Radio ZET Rock - radio: true - tvg_logo: radio/radiozet.png - tvg_name: Radio ZET Rock - url: http://zet.cdn.eurozet.pl/ZETROK.mp3 - - group_title: Radio-PL - group_title_kodi: Polen - name: RMF FM - radio: true - tvg_logo: radio/rmffm.png - tvg_name: RMF FM - url: http://195.150.20.243/RMFFM48 -ro: - - group_title: Radio-RO - group_title_kodi: Rumänien - name: Radio Manele - radio: true - tvg_logo: radio/radiomanele.png - tvg_name: Radio Manele - url: https://radio.ascultatare.ro/8044/stream -it: - - group_title: Radio-IT - group_title_kodi: Italien und Südtirol - name: Radio 2000 - radio: true - tvg_logo: radio/radio2000it.png - tvg_name: Radio 2000 - url: http://159.69.217.78:8000/?radio=radio2000.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: 100'5 Alemannia + radio: true + tvg_logo: radio/1005dashitradio.png + tvg_name: 100'5 Alemannia + url: https://stream.dashitradio.de/alemannia/mp3-128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: 100'5 DAS HITRADIO + radio: true + tvg_logo: radio/1005dashitradio.png + tvg_name: 100'5 DAS HITRADIO + url: https://stream.dashitradio.de/dashitradio/mp3-128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: 105'5 Spreeradio + radio: true + tvg_logo: radio/1055spreeradio.png + tvg_name: 105'5 Spreeradio + url: http://stream.spreeradio.de/spree-live/mp3-128/konsole +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: 105'5 Spreeradio 80er + radio: true + tvg_logo: radio/1055spreeradio.png + tvg_name: 105'5 Spreeradio 80er + url: http://stream.spreeradio.de/spree-80er/mp3-128/konsole +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: 105'5 Spreeradio Love + radio: true + tvg_logo: radio/1055spreeradio.png + tvg_name: 105'5 Spreeradio Love + url: http://stream.spreeradio.de/spree-love/mp3-128/konsole +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: 105'5 Spreeradio Rock + radio: true + tvg_logo: radio/1055spreeradio.png + tvg_name: 105'5 Spreeradio Rock + url: http://stream.spreeradio.de/spree-rock/mp3-128/konsole +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: 105'5 Spreeradio Weihnachtsradio + radio: true + tvg_logo: radio/1055spreeradio.png + tvg_name: 105'5 Spreeradio Weihnachtsradio + url: http://stream.spreeradio.de/spree-event/mp3-128/konsole +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: 1LIVE + radio: true + tvg_logo: radio/1live.png + tvg_name: 1LIVE + url: http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: 1LIVE diggi + radio: true + tvg_logo: radio/1livediggi.png + tvg_name: 1LIVE diggi + url: http://wdr-1live-diggi.icecast.wdr.de/wdr/1live/diggi/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: 89.0 RTL + radio: true + tvg_logo: radio/890rtl.png + tvg_name: 89.0 RTL + url: http://stream.89.0rtl.de/live/mp3-256/direktlinkHP +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Absolut Radio + radio: true + tvg_logo: radio/absolutradio.png + tvg_name: Absolut Radio + url: http://stream.absolutradio.de/hq/mp3-160/stream.absolutradio.de +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Absolut relax + radio: true + tvg_logo: radio/absolutrelax.png + tvg_name: Absolut relax + url: http://stream.absolutradio.de/relax/mp3-160/stream.absolutradio.de +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: antenne 1 + radio: true + tvg_logo: radio/antenne1.png + tvg_name: antenne 1 + url: http://stream.antenne1.de/a1stg/livestream2.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: ANTENNE BAYERN + radio: true + tvg_logo: radio/antennebayern.png + tvg_name: ANTENNE BAYERN + url: http://mp3channels.webradio.antenne.de:80/antenne +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Antenne Brandenburg + radio: true + tvg_logo: radio/antennebrandenburg.png + tvg_name: Antenne Brandenburg + url: https://dispatcher.rndfnk.com/rbb/antennebrandenburg/live/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: ANTENNE THÜRINGEN + radio: true + tvg_logo: radio/antennethueringen.png + tvg_name: ANTENNE THÜRINGEN + url: http://stream.antennethueringen.de/live/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: AntenneSaar + radio: true + tvg_logo: radio/antennesaar.png + tvg_name: AntenneSaar + url: http://asm.akacast.akamaistream.net/7/495/305516/v1/gnl.akacast.akamaistream.net/asm +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: BR24 + radio: true + tvg_logo: radio/br24.png + tvg_name: BR24 + url: https://dispatcher.rndfnk.com/br/br24/live/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: BR24 live + radio: true + tvg_logo: radio/br24live.png + tvg_name: BR24 live + url: https://dispatcher.rndfnk.com/br/br24live/live/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bayern 1 Mittel- und Oberfranken + radio: true + tvg_logo: radio/bayern1.png + tvg_name: Bayern 1 Mittel- und Oberfranken + url: https://dispatcher.rndfnk.com/br/br1/franken/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bayern 1 Mainfranken + radio: true + tvg_logo: radio/bayern1.png + tvg_name: Bayern 1 Mainfranken + url: https://dispatcher.rndfnk.com/br/br1/mainfranken/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bayern 1 Oberbayern + radio: true + tvg_logo: radio/bayern1.png + tvg_name: Bayern 1 Oberbayern + url: https://dispatcher.rndfnk.com/br/br1/obb/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bayern 1 Niederbayern und Oberpfalz + radio: true + tvg_logo: radio/bayern1.png + tvg_name: Bayern 1 Niederbayern und Oberpfalz + url: https://dispatcher.rndfnk.com/br/br1/nbopf/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bayern 1 Schwaben + radio: true + tvg_logo: radio/bayern1.png + tvg_name: Bayern 1 Schwaben + url: https://dispatcher.rndfnk.com/br/br1/schwaben/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bayern 2 Nord + radio: true + tvg_logo: radio/bayern2.png + tvg_name: Bayern 2 Nord + url: https://dispatcher.rndfnk.com/br/br2/nord/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bayern 2 Süd + radio: true + tvg_logo: radio/bayern2.png + tvg_name: Bayern 2 Süd + url: https://dispatcher.rndfnk.com/br/br2/sued/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bayern 3 + radio: true + tvg_logo: radio/bayern3.png + tvg_name: Bayern 3 + url: https://dispatcher.rndfnk.com/br/br3/live/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: bigFM + radio: true + tvg_logo: radio/bigfm.png + tvg_name: bigFM + url: https://streams.bigfm.de/bigfm-deutschland-128-mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: BlackBeats.FM + radio: true + tvg_logo: radio/blackbeatsfm.png + tvg_name: BlackBeats.FM + url: http://stream.blackbeatslive.de/ +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: BR Heimat + radio: true + tvg_logo: radio/brheimat.png + tvg_name: BR Heimat + url: https://dispatcher.rndfnk.com/br/brheimat/live/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: BR-Klassik + radio: true + tvg_logo: radio/brklassik.png + tvg_name: BR-Klassik + url: https://dispatcher.rndfnk.com/br/brklassik/live/mp3/high +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bremen Eins + radio: true + tvg_logo: radio/bremeneins.png + tvg_name: Bremen Eins + url: https://dispatcher.rndfnk.com/rb/bremeneins/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bremen Vier + radio: true + tvg_logo: radio/bremenvier.png + tvg_name: Bremen Vier + url: https://dispatcher.rndfnk.com/rb/bremenvier/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bremen Vier rockt + radio: true + tvg_logo: radio/bremenvier.png + tvg_name: Bremen Vier rockt + url: https://icecast.radiobremen.de/rb/bremenvier/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Bremen Zwei + radio: true + tvg_logo: radio/bremenzwei.png + tvg_name: Bremen Zwei + url: https://dispatcher.rndfnk.com/rb/bremenzwei/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Campusradio Köln (Kölncampus) + radio: true + tvg_logo: radio/koelncampus.png + tvg_name: Campusradio Köln (Kölncampus) + url: http://koelncampus.uni-koeln.de:80/hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Campusradio Münster (Radio Q) + radio: true + tvg_logo: radio/radioq.png + tvg_name: Campusradio Münster (Radio Q) + url: https://rqstream.radioq.de/stream/192.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Campusradio Paderborn (L'UniCo) + radio: true + tvg_logo: radio/lunico.png + tvg_name: Campusradio Paderborn (L'UniCo) + url: http://icecast.l-uni.co:8001/lunico_high_mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Campusradio Bielefeld (Hertz 87.9) + radio: true + tvg_logo: radio/hertz879.png + tvg_name: Campusradio Bielefeld (Hertz 87.9) + url: http://stream.radiohertz.de/hertz-hq.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DASDING + radio: true + tvg_logo: radio/dasding.png + tvg_name: DASDING + url: https://dispatcher.rndfnk.com/swr/dasding/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DELUXE 80S EXTREME + radio: true + tvg_logo: radio/deluxeradio.png + tvg_name: DELUXE 80S EXTREME + url: https://audiostreams.deluxemusic.tv/80s/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DELUXE RCK Radio + radio: true + tvg_logo: radio/deluxeradio.png + tvg_name: DELUXE RCK Radio + url: https://audiostreams.deluxemusic.tv/rck/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DELUXE CHEFSESSEL by WAGNER + radio: true + tvg_logo: radio/deluxeradio.png + tvg_name: DELUXE CHEFSESSEL by WAGNER + url: https://audiostreams.deluxemusic.tv/chefsessel/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DELUXE EASY + radio: true + tvg_logo: radio/deluxeeasy.png + tvg_name: DELUXE EASY + url: https://audiostreams.deluxemusic.tv/easy/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DELUXE LOUNGE RADIO + radio: true + tvg_logo: radio/deluxeloungeradio.png + tvg_name: DELUXE LOUNGE RADIO + url: https://audiostreams.deluxemusic.tv/lounge/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DELUXE MUSIC RADIO + radio: true + tvg_logo: radio/deluxemusicradio.png + tvg_name: DELUXE MUSIC RADIO + url: https://audiostreams.deluxemusic.tv/music/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DELUXE NEW ARRIVALS + radio: true + tvg_logo: radio/deluxeradio.png + tvg_name: DELUXE NEW ARRIVALS + url: https://audiostreams.deluxemusic.tv/arrivals/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DELUXE TOP 40 + radio: true + tvg_logo: radio/deluxeradio.png + tvg_name: DELUXE TOP 40 + url: https://audiostreams.deluxemusic.tv/top40/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Deutschlandfunk + radio: true + tvg_logo: radio/deutschlandfunk.png + tvg_name: Deutschlandfunk + url: https://st01.sslstream.dlf.de/dlf/01/high/aac/stream.aac +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Deutschlandfunk Kultur + radio: true + tvg_logo: radio/deutschlandfunkkultur.png + tvg_name: Deutschlandfunk Kultur + url: https://st02.sslstream.dlf.de/dlf/02/high/aac/stream.aac +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Deutschlandfunk Nova + radio: true + tvg_logo: radio/deutschlandfunknova.png + tvg_name: Deutschlandfunk Nova + url: https://st03.sslstream.dlf.de/dlf/03/high/aac/stream.aac +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Deutschlandradio Dokumente und Debatten + radio: true + tvg_logo: radio/deutschlandradiodud.png + tvg_name: Deutschlandradio Dokumente und Debatten + url: https://st04.sslstream.dlf.de/dlf/04/high/aac/stream.aac +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DIE NEUE 107.7 + radio: true + tvg_logo: radio/dieneue1077.png + tvg_name: DIE NEUE 107.7 + url: http://dieneue1077.cast.addradio.de/dieneue1077/simulcast/high/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DELUXE DISCO + radio: true + tvg_logo: radio/deluxeradio.png + tvg_name: DELUXE DISCO + url: https://audiostreams.deluxemusic.tv/disco/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: domradio.de + radio: true + tvg_logo: radio/domradiode.png + tvg_name: domradio.de + url: https://dom.audiostream.io/domradio/1000/mp3/128/domRadio-rp.mp3 + category: rp.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: DONAU 3 FM + radio: true + tvg_logo: radio/donau3fm.png + tvg_name: DONAU 3 FM + url: http://mp3.donau3fm.c.nmdn.net/donau3fm/live.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: egoFM + radio: true + tvg_logo: radio/egofm.png + tvg_name: egoFM + url: http://mp3ad.egofm.c.nmdn.net/ps-egofm_192/livestream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: ERF Plus + radio: true + tvg_logo: radio/erfplus.png + tvg_name: ERF Plus + url: http://erf1a64-ice-edge-1106-fra-eco-cdn.cast.addradio.de/erf1a64/live/mp3/high +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: ERF Pop + radio: true + tvg_logo: radio/erfpop.png + tvg_name: ERF Pop + url: http://erf1068-ice-edge-1103-fra-eco-cdn.cast.addradio.de/erf1068/live/mp3/high +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: FluxFM + radio: true + tvg_logo: radio/fluxfm.png + tvg_name: FluxFM + url: http://streams.fluxfm.de/live/mp3-320/audio/ +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Fritz + radio: true + tvg_logo: radio/fritz.png + tvg_name: Fritz + url: https://dispatcher.rndfnk.com/rbb/fritz/live/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: harmony.fm + radio: true + tvg_logo: radio/harmonyfm.png + tvg_name: harmony.fm + url: https://mp3.harmonyfm.de/harmonyfm/hqlivestream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: HIT RADIO FFH + radio: true + tvg_logo: radio/hitradioffh.png + tvg_name: HIT RADIO FFH + url: http://mp3.ffh.de/radioffh/hqlivestream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: hr-info + radio: true + tvg_logo: radio/hrinfo.png + tvg_name: hr-info + url: https://dispatcher.rndfnk.com/hr/hrinfo/live/mp3/high +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: hr1 + radio: true + tvg_logo: radio/hr1.png + tvg_name: hr1 + url: https://dispatcher.rndfnk.com/hr/hr1/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: hr2-kultur + radio: true + tvg_logo: radio/hr2kultur.png + tvg_name: hr2-kultur + url: https://dispatcher.rndfnk.com/hr/hr2/live/mp3/256/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: hr3 + radio: true + tvg_logo: radio/hr3.png + tvg_name: hr3 + url: https://dispatcher.rndfnk.com/hr/hr3/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: hr4 + radio: true + tvg_logo: radio/hr4.png + tvg_name: hr4 + url: https://dispatcher.rndfnk.com/hr/hr4/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: JAM FM + radio: true + tvg_logo: radio/jamfm.png + tvg_name: JAM FM + url: http://stream.jam.fm/jamfm-live/mp3-128/konsole/ +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: JAM FM Black Label + radio: true + tvg_logo: radio/jamfm.png + tvg_name: JAM FM Black Label + url: http://stream.jam.fm/jamfm-bl/mp3-128/konsole/ +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: JAM FM New Music Radio + radio: true + tvg_logo: radio/jamfm.png + tvg_name: JAM FM New Music Radio + url: http://stream.jam.fm/jamfm-nmr/mp3-128/konsole/ +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: JazzRadio Berlin + radio: true + tvg_logo: radio/jazzradio.png + tvg_name: JazzRadio Berlin + url: http://streaming.radio.co:80/s774887f7b/listen +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: JUKEBOX RADIO + radio: true + tvg_logo: radio/deluxeradio.png + tvg_name: JUKEBOX RADIO + url: https://audiostreams.deluxemusic.tv/jukebox/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: WDR Die Maus + radio: true + tvg_logo: radio/mausradio.png + tvg_name: WDR Die Maus + url: https://wdr-diemaus-live.icecastssl.wdr.de/wdr/diemaus/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: LandesWelle Thüringen + radio: true + tvg_logo: radio/landeswellethueringen.png + tvg_name: LandesWelle Thüringen + url: http://stream.landeswelle.de/lwt/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: MDR AKTUELL + radio: true + tvg_logo: radio/mdraktuell.png + tvg_name: MDR AKTUELL + url: http://mdr-284340-0.cast.mdr.de/mdr/284340/0/mp3/high/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: MDR JUMP + radio: true + tvg_logo: radio/mdrjump.png + tvg_name: MDR JUMP + url: http://mdr-284320-0.cast.mdr.de/mdr/284320/0/mp3/high/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: MDR KLASSIK + radio: true + tvg_logo: radio/mdrklassik.png + tvg_name: MDR KLASSIK + url: http://mdr-284350-0.cast.mdr.de/mdr/284350/0/mp3/high/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: MDR KULTUR + radio: true + tvg_logo: radio/mdrkultur.png + tvg_name: MDR KULTUR + url: http://mdr-284310-0.cast.mdr.de/mdr/284310/0/mp3/high/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: MDR SACHSEN + radio: true + tvg_logo: radio/mdrsachsen.png + tvg_name: MDR SACHSEN + url: http://mdr-284280-0.cast.mdr.de/mdr/284280/0/mp3/high/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: MDR SPUTNIK + radio: true + tvg_logo: radio/mdrsputnik.png + tvg_name: MDR SPUTNIK + url: http://mdr-284330-0.cast.mdr.de/mdr/284330/0/mp3/high/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: MDR THÜRINGEN + radio: true + tvg_logo: radio/mdrthueringen.png + tvg_name: MDR THÜRINGEN + url: http://mdr-284300-0.cast.mdr.de/mdr/284300/0/mp3/high/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Metal Only + radio: true + tvg_logo: radio/metalonly.png + tvg_name: Metal Only + url: http://metal-only.streampanel.cloud/stream +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: multicult.fm + radio: true + tvg_logo: radio/multicultfm.png + tvg_name: multicult.fm + url: http://stream.multicult.fm:8000/hifi +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: N-JOY + radio: true + tvg_logo: radio/njoy.png + tvg_name: N-JOY + url: https://dispatcher.rndfnk.com/ndr/njoy/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: NDR 1 Niedersachsen + radio: true + tvg_logo: radio/ndr1niedersachsen.png + tvg_name: NDR 1 Niedersachsen + url: https://dispatcher.rndfnk.com/ndr/ndr1niedersachsen/hannover/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: NDR 1 Radio MV + radio: true + tvg_logo: radio/ndr1radiomv.png + tvg_name: NDR 1 Radio MV + url: https://dispatcher.rndfnk.com/ndr/ndr1radiomv/schwerin/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: NDR 1 Welle Nord + radio: true + tvg_logo: radio/ndr1wellenord.png + tvg_name: NDR 1 Welle Nord + url: https://dispatcher.rndfnk.com/ndr/ndr1wellenord/kiel/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: NDR 2 + radio: true + tvg_logo: radio/ndr2.png + tvg_name: NDR 2 + url: https://dispatcher.rndfnk.com/ndr/ndr2/niedersachsen/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: NDR 90.3 + radio: true + tvg_logo: radio/ndr903.png + tvg_name: NDR 90.3 + url: https://dispatcher.rndfnk.com/ndr/ndr903/hamburg/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: NDR Blue + radio: true + tvg_logo: radio/ndrblue.png + tvg_name: NDR Blue + url: https://dispatcher.rndfnk.com/ndr/ndrblue/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: NDR Info + radio: true + tvg_logo: radio/ndrinfo.png + tvg_name: NDR Info + url: https://dispatcher.rndfnk.com/ndr/ndrinfo/niedersachsen/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: NDR Info Spezial + radio: true + tvg_logo: radio/ndrinfospezial.png + tvg_name: NDR Info Spezial + url: https://dispatcher.rndfnk.com/ndr/ndrinfospezial/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: NDR kultur + radio: true + tvg_logo: radio/ndrkultur.png + tvg_name: NDR kultur + url: https://dispatcher.rndfnk.com/ndr/ndrkultur/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: NDR Plus + radio: true + tvg_logo: radio/ndrplus.png + tvg_name: NDR Plus + url: https://dispatcher.rndfnk.com/ndr/ndrplus/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: nice + radio: true + tvg_logo: radio/nice.png + tvg_name: nice + url: https://ice.cr5.streamzilla.xlcdn.com:8000/sz%3Dnice-broadcast-media-gmbh%3Dniceradio1-mp3-256 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: oldenburg eins + radio: true + tvg_logo: radio/oldenburgeins.png + tvg_name: oldenburg eins + url: http://radio.oeins.de:8000/oeins +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Ostseewelle HIT-RADIO + radio: true + tvg_logo: radio/ostseewelle.png + tvg_name: Ostseewelle HIT-RADIO + url: http://mp3.ostseewelle.c.nmdn.net/ostseewellelive/livestream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: planet radio + radio: true + tvg_logo: radio/planetradio.png + tvg_name: planet radio + url: http://mp3.planetradio.de/planetradio/hqlivestream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: PULS + radio: true + tvg_logo: radio/puls.png + tvg_name: PULS + url: https://dispatcher.rndfnk.com/br/puls/live/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Radio 7 + radio: true + tvg_logo: radio/radio7.png + tvg_name: Radio 7 + url: https://edge04.streamonkey.net/radio7-dab +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Radio 90.1 + radio: true + tvg_logo: radio/radio901.png + tvg_name: Radio 90.1 + url: http://mp3.radiomg.c.nmdn.net/radiomg/livestream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: radio B2 + radio: true + tvg_logo: radio/radiob2.png + tvg_name: radio B2 + url: http://mp3ad.radiob2.c.nmdn.net/fs_radiob2regional/livestream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! national + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! national + url: https://bob.hoerradar.de/radiobob-national-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! NRW + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! NRW + url: https://bob.hoerradar.de/bob-live-nrw-mitte-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Schleswig-Holstein + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Schleswig-Holstein + url: https://bob.hoerradar.de/radiobob-shlive-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Hessen + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Hessen + url: https://bob.hoerradar.de/radiobob-live-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Metal + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Metal + url: https://bob.hoerradar.de/radiobob-metal-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Alternative Rock + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Alternative Rock + url: https://bob.hoerradar.de/radiobob-alternativerock-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Classic Rock + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Classic Rock + url: https://bob.hoerradar.de/radiobob-classicrock-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! ACDC + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! ACDC + url: https://bob.hoerradar.de/radiobob-acdc-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Deutschrock + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Deutschrock + url: https://bob.hoerradar.de/radiobob-deutschrock-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Wacken + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Wacken + url: https://bob.hoerradar.de/radiobob-wacken-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Grunge + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Grunge + url: https://bob.hoerradar.de/radiobob-grunge-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! 90er Rock + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! 90er Rock + url: https://bob.hoerradar.de/radiobob-90srock-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Hardrock + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Hardrock + url: https://bob.hoerradar.de/radiobob-hardrock-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Metalcore + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Metalcore + url: https://bob.hoerradar.de/radiobob-metalcore-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Metallica + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Metallica + url: https://bob.hoerradar.de/radiobob-metallica-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Tobias Sammet Rockshow + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Tobias Sammet Rockshow + url: https://bob.hoerradar.de/radiobob-sammet-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Mittelalter Rock + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Mittelalter Rock + url: https://bob.hoerradar.de/radiobob-mittelalter-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Symphonic Metal + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Symphonic Metal + url: https://bob.hoerradar.de/radiobob-symphmetal-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Punk + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Punk + url: https://bob.hoerradar.de/radiobob-punk-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Kuschelrock + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Kuschelrock + url: https://bob.hoerradar.de/radiobob-kuschelrock-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Death Metal + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Death Metal + url: https://bob.hoerradar.de/radiobob-deathmetal-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Rockparty + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Rockparty + url: https://bob.hoerradar.de/radiobob-rockparty-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Southern Rock + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Southern Rock + url: https://bob.hoerradar.de/radiobob-southernrock-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Der Dunkle Parabelritter + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Der Dunkle Parabelritter + url: https://bob.hoerradar.de/radiobob-dunklepritter-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Newcomer + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Newcomer + url: https://bob.hoerradar.de/radiobob-newcomer-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Gothic Rock + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Gothic Rock + url: https://bob.hoerradar.de/radiobob-gothic-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Best of Rock + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Best of Rock + url: https://bob.hoerradar.de/radiobob-bestofrock-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Festival + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Festival + url: https://bob.hoerradar.de/radiobob-festival-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Unplugged + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Unplugged + url: https://bob.hoerradar.de/radiobob-chillout-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Rockabilly + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Rockabilly + url: https://bob.hoerradar.de/radiobob-rockabilly-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Harte Saite + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Harte Saite + url: https://bob.hoerradar.de/radiobob-hartesaite-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Singer-Songwriter + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Singer-Songwriter + url: https://bob.hoerradar.de/radiobob-singersong-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO BOB! Rock Hits + radio: true + tvg_logo: radio/radiobob.png + tvg_name: RADIO BOB! Rock Hits + url: https://bob.hoerradar.de/radiobob-rockhits-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Radio Brocken + radio: true + tvg_logo: radio/radiobrocken.png + tvg_name: Radio Brocken + url: http://stream.radiobrocken.de/live/mp3-256 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO ENERGY Sachsen + radio: true + tvg_logo: radio/radioenergysachsen.png + tvg_name: RADIO ENERGY Sachsen + url: https://scdn.nrjaudio.fm/adwz1/de/33013/mp3_128.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO ENERGY Stuttgart + radio: true + tvg_logo: radio/radioenergystuttgart.png + tvg_name: RADIO ENERGY Stuttgart + url: https://scdn.nrjaudio.fm/adwz1/de/33005/mp3_128.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RADIO ENERGY Bremen + radio: true + tvg_logo: radio/radioenergybremen.png + tvg_name: RADIO ENERGY Bremen + url: http://ffn-stream24.radiohost.de/energybremen_mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Radio Horeb + radio: true + tvg_logo: radio/radiohoreb.png + tvg_name: Radio Horeb + url: http://rs16.stream24.org:8000/horeb.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Radio Paloma + radio: true + tvg_logo: radio/radiopaloma.png + tvg_name: Radio Paloma + url: http://pool.radiopaloma.de/RADIOPALOMA.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Radio Regenbogen + radio: true + tvg_logo: radio/radioregenbogen.png + tvg_name: Radio Regenbogen + url: http://streams.regenbogen.de/rr-mannheim-128-mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: radio SAW + radio: true + tvg_logo: radio/radiosaw.png + tvg_name: radio SAW + url: http://stream.radiosaw.de +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: radio TOP 40 + radio: true + tvg_logo: radio/radiotop40.png + tvg_name: radio TOP 40 + url: http://stream.radiotop40.de/live/mp3-192 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Radio TEDDY + radio: true + tvg_logo: radio/radioteddy.png + tvg_name: Radio TEDDY + url: http://streamtdy.ir-media-tec.com/live/mp3-128/web/play.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: rbb Inforadio + radio: true + tvg_logo: radio/rbbInforadio.png + tvg_name: rbb Inforadio + url: https://dispatcher.rndfnk.com/rbb/inforadio/live/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: rbbKultur + radio: true + tvg_logo: radio/rbbKultur.png + tvg_name: rbbKultur + url: https://dispatcher.rndfnk.com/rbb/rbbkultur/live/mp3/high +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: radioeins + radio: true + tvg_logo: radio/radioeins.png + tvg_name: radioeins + url: https://dispatcher.rndfnk.com/rbb/radioeins/live/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: rbb 88.8 + radio: true + tvg_logo: radio/rbb888.png + tvg_name: rbb 88.8 + url: https://dispatcher.rndfnk.com/rbb/rbb888/live/mp3/mid +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: reboot.fm + radio: true + tvg_logo: radio/rebootfm.png + tvg_name: reboot.fm + url: http://87.118.122.220:8002/stream +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: ROCK ANTENNE + radio: true + tvg_logo: radio/rockantenne.png + tvg_name: ROCK ANTENNE + url: http://mp3channels.webradio.rockantenne.de/rockantenne +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: ROCK ANTENNE HEAVY-METAL + radio: true + tvg_logo: radio/rockantenne.png + tvg_name: ROCK ANTENNE HEAVY-METAL + url: http://stream.rockantenne.de/heavy-metal +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Rockland Radio + radio: true + tvg_logo: radio/rocklandradio.png + tvg_name: Rockland Radio + url: https://stream.rockland.de/rockland.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: ROCKLAND.FM + radio: true + tvg_logo: radio/rocklandfm.png + tvg_name: ROCKLAND.FM + url: http://stream.rockland-digital.de +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RPR1 + radio: true + tvg_logo: radio/rpr1.png + tvg_name: RPR1 + url: http://streams.rpr1.de/rpr-koeln-128-mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: RTF.3 + radio: true + tvg_logo: radio/rtf3.png + tvg_name: RTF.3 + url: http://37.187.93.104:8414/stream +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: SR 1 Europawelle + radio: true + tvg_logo: radio/sr1europawelle.png + tvg_name: SR 1 Europawelle + url: http://sr1m.akacast.akamaistream.net/7/725/142685/v1/gnl.akacast.akamaistream.net/sr1m +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: SR 2 Kulturradio + radio: true + tvg_logo: radio/sr2kulturradio.png + tvg_name: SR 2 Kulturradio + url: http://sr2m.akacast.akamaistream.net/7/375/142686/v1/gnl.akacast.akamaistream.net/sr2m +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: SR 3 Saarlandwelle + radio: true + tvg_logo: radio/sr3saarlandwelle.png + tvg_name: SR 3 Saarlandwelle + url: http://sr3m.akacast.akamaistream.net/7/722/142687/v1/gnl.akacast.akamaistream.net/sr3m +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: sunshine live + radio: true + tvg_logo: radio/sunshinelive.png + tvg_name: sunshine live + url: http://sunshinelive.hoerradar.de/sunshinelive-live-mp3-hq +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: SWR1 Baden-Württemberg + radio: true + tvg_logo: radio/swr1.png + tvg_name: SWR1 Baden-Württemberg + url: https://dispatcher.rndfnk.com/swr/swr1/bw/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: SWR1 Rheinland-Pfalz + radio: true + tvg_logo: radio/swr1.png + tvg_name: SWR1 Rheinland-Pfalz + url: https://dispatcher.rndfnk.com/swr/swr1/rp/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: SWR2 + radio: true + tvg_logo: radio/swr2.png + tvg_name: SWR2 + url: https://dispatcher.rndfnk.com/swr/swr2/live/mp3/256/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: SWR3 + radio: true + tvg_logo: radio/swr3.png + tvg_name: SWR3 + url: https://dispatcher.rndfnk.com/swr/swr3/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: SWR4 Baden-Württemberg + radio: true + tvg_logo: radio/swr4.png + tvg_name: SWR4 Baden-Württemberg + url: https://dispatcher.rndfnk.com/swr/swr4/bw/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: SWR4 Rheinland-Pfalz + radio: true + tvg_logo: radio/swr4.png + tvg_name: SWR4 Rheinland-Pfalz + url: https://dispatcher.rndfnk.com/swr/swr4/rp/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: UNSERDING + radio: true + tvg_logo: radio/unserding.png + tvg_name: UNSERDING + url: http://udm.akacast.akamaistream.net/7/384/142688/v1/gnl.akacast.akamaistream.net/udm +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: WDR 2 + radio: true + tvg_logo: radio/wdr2.png + tvg_name: WDR 2 + url: http://wdr-wdr2-rheinland.icecast.wdr.de/wdr/wdr2/rheinland/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: WDR 3 + radio: true + tvg_logo: radio/wdr3.png + tvg_name: WDR 3 + url: http://wdr-wdr3-live.icecast.wdr.de/wdr/wdr3/live/mp3/256/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: WDR 4 + radio: true + tvg_logo: radio/wdr4.png + tvg_name: WDR 4 + url: http://wdr-wdr4-live.icecast.wdr.de/wdr/wdr4/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: WDR 5 + radio: true + tvg_logo: radio/wdr5.png + tvg_name: WDR 5 + url: http://wdr-wdr5-live.icecast.wdr.de/wdr/wdr5/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: YOU FM + radio: true + tvg_logo: radio/youfm.png + tvg_name: YOU FM + url: https://dispatcher.rndfnk.com/hr/youfm/live/mp3/128/stream.mp3 +- group_title: Radio-DE + category: de + group_titles_kodi: + - Deutschland + name: Radio 21 Hannover + radio: true + tvg_logo: radio/radio21hannover.png + tvg_name: Radio 21 Hannover + url: https://radio21.streamabc.net/radio21-hannover-mp3-192-3735655 +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: FM4 + radio: true + tvg_logo: radio/fm4.png + tvg_name: FM4 + url: https://orf-live.ors-shoutcast.at/fm4-q2a +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: Hitradio Ö3 + radio: true + tvg_logo: radio/hitradiooe3.png + tvg_name: Hitradio Ö3 + url: https://orf-live.ors-shoutcast.at/oe3-q2a +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: Klassik Radio + radio: true + tvg_logo: radio/klassikradio.png + tvg_name: Klassik Radio + url: https://edge61.streams.klassikradio.de/klassikRadio-oesterreich/stream/mp3 + category: oesterreich/stream/mp3 +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: KRONEHIT + radio: true + tvg_logo: radio/kronehit.png + tvg_name: KRONEHIT + url: http://onair.krone.at:80/kronehit.mp3 +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: KRONEHIT Dance + radio: true + tvg_logo: radio/kronehit.png + tvg_name: KRONEHIT Dance + url: http://onair.krone.at:80/kronehit-dance.mp3 +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: Life Radio + radio: true + tvg_logo: radio/liferadio.png + tvg_name: Life Radio + url: https://stream.liferadio.at/liferadio/mp3-192 +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: Orange 94.0 + radio: true + tvg_logo: radio/orange94.0.png + tvg_name: Orange 94.0 + url: https://securestream.o94.at/live.mp3 +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: Ö1 + radio: true + tvg_logo: radio/oe1.png + tvg_name: Ö1 + url: https://orf-live.ors-shoutcast.at/oe1-q2a +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: Ö1 Campus + radio: true + tvg_logo: radio/oe1.png + tvg_name: Ö1 Campus + url: https://orf-live.ors-shoutcast.at/campus-q2a +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: Radio Niederösterreich + radio: true + tvg_logo: radio/radioniederoesterreich.png + tvg_name: Radio Niederösterreich + url: https://orf-live.ors-shoutcast.at/noe-q2a +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: Radio Steiermark + radio: true + tvg_logo: radio/radiosteiermark.png + tvg_name: Radio Steiermark + url: https://orf-live.ors-shoutcast.at/stm-q2a +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: Radio Tirol + radio: true + tvg_logo: radio/radiotirol.png + tvg_name: Radio Tirol + url: https://orf-live.ors-shoutcast.at/tir-q2a +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: Radio Wien + radio: true + tvg_logo: radio/radiowien.png + tvg_name: Radio Wien + url: https://orf-live.ors-shoutcast.at/wie-q2a +- group_title: Radio-AT + category: at + group_titles_kodi: + - Österreich + name: U1 Tirol + radio: true + tvg_logo: radio/u1tirol.png + tvg_name: U1 Tirol + url: https://live.u1-radio.at/stream.mp3 +- group_title: Radio-CH + category: ch + group_titles_kodi: + - Schweiz + name: Radio SRF 1 + radio: true + tvg_logo: radio/radiosrf1.png + tvg_name: Radio SRF 1 + url: http://stream.srg-ssr.ch/m/drs1/mp3_128 +- group_title: Radio-CH + category: ch + group_titles_kodi: + - Schweiz + name: Radio SRF 2 Kultur + radio: true + tvg_logo: radio/radiosrf2kultur.png + tvg_name: Radio SRF 2 Kultur + url: http://stream.srg-ssr.ch/m/drs2/mp3_128 +- group_title: Radio-CH + category: ch + group_titles_kodi: + - Schweiz + name: Radio SRF 3 + radio: true + tvg_logo: radio/radiosrf3.png + tvg_name: Radio SRF 3 + url: http://stream.srg-ssr.ch/m/drs3/mp3_128 +- group_title: Radio-CH + category: ch + group_titles_kodi: + - Schweiz + name: Radio SRF 4 News + radio: true + tvg_logo: radio/radiosrf4news.png + tvg_name: Radio SRF 4 News + url: http://stream.srg-ssr.ch/m/drs4news/mp3_128 +- group_title: Radio-CH + category: ch + group_titles_kodi: + - Schweiz + name: Radio SRF Musikwelle + radio: true + tvg_logo: radio/radiosrfmusikwelle.png + tvg_name: Radio SRF Musikwelle + url: http://stream.srg-ssr.ch/m/drsmw/mp3_128 +- group_title: Radio-CH + category: ch + group_titles_kodi: + - Schweiz + name: Radio SRF Virus + radio: true + tvg_logo: radio/radiosrfvirus.png + tvg_name: Radio SRF Virus + url: http://stream.srg-ssr.ch/m/drsvirus/mp3_128 +- group_title: Radio-CH + category: ch + group_titles_kodi: + - Schweiz + name: Radio Swiss Pop + radio: true + tvg_logo: radio/radioswisspop.png + tvg_name: Radio Swiss Pop + url: http://stream.srg-ssr.ch/m/rsp/mp3_128 +- group_title: Radio-CH + category: ch + group_titles_kodi: + - Schweiz + name: Radio Swiss Classic + radio: true + tvg_logo: radio/radioswissclassic.png + tvg_name: Radio Swiss Classic + url: http://stream.srg-ssr.ch/m/rsc_de/mp3_128 +- group_title: Radio-CH + category: ch + group_titles_kodi: + - Schweiz + name: Radio Swiss Jazz + radio: true + tvg_logo: radio/radioswissjazz.png + tvg_name: Radio Swiss Jazz + url: http://stream.srg-ssr.ch/m/rsj/mp3_128 +- group_title: Radio-CH + category: ch + group_titles_kodi: + - Schweiz + name: Radio Zürisee + radio: true + tvg_logo: radio/radiozuerisee.png + tvg_name: Radio Zürisee + url: http://mp3.radio.ch/radiozuerisee128k +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Asian Network + radio: true + tvg_logo: radio/bbcasiannetwork.png + tvg_name: BBC Asian Network + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_asianet_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio 1 + radio: true + tvg_logo: radio/bbcradio1.png + tvg_name: BBC Radio 1 + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio 1Xtra + radio: true + tvg_logo: radio/bbcradio1xtra.png + tvg_name: BBC Radio 1Xtra + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1xtra_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio 2 + radio: true + tvg_logo: radio/bbcradio2.png + tvg_name: BBC Radio 2 + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio2_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio 3 + radio: true + tvg_logo: radio/bbcradio3.png + tvg_name: BBC Radio 3 + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio3_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio 4 + radio: true + tvg_logo: radio/bbcradio4.png + tvg_name: BBC Radio 4 + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4fm_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio 4 Extra + radio: true + tvg_logo: radio/bbcradio4extra.png + tvg_name: BBC Radio 4 Extra + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4extra_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio 5 Live + radio: true + tvg_logo: radio/bbcradio5live.png + tvg_name: BBC Radio 5 Live + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio5live_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio 6 Music + radio: true + tvg_logo: radio/bbcradio6music.png + tvg_name: BBC Radio 6 Music + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_6music_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio Cymru + radio: true + tvg_logo: radio/bbcradiocymru.png + tvg_name: BBC Radio Cymru + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_cymru_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio Foyle + radio: true + tvg_logo: radio/bbcradiofoyle.png + tvg_name: BBC Radio Foyle + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_foyle_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio nan Gàidheal + radio: true + tvg_logo: radio/bbcradionangaidheal.png + tvg_name: BBC Radio nan Gàidheal + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_nangaidheal_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio Scotland + radio: true + tvg_logo: radio/bbcradioscotland.png + tvg_name: BBC Radio Scotland + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_scotlandfm_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio Ulster + radio: true + tvg_logo: radio/bbcradioulster.png + tvg_name: BBC Radio Ulster + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_ulster_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC Radio Wales + radio: true + tvg_logo: radio/bbcradiowales.png + tvg_name: BBC Radio Wales + url: http://bbcmedia.ic.llnwd.net/stream/bbcmedia_walesmw_mf_p +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: BBC World Service + radio: true + tvg_logo: radio/bbcworldservice.png + tvg_name: BBC World Service + url: http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-eieuk +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: Classic FM + radio: true + tvg_logo: radio/classicfm.png + tvg_name: Classic FM + url: http://media-ice.musicradio.com:80/ClassicFMMP3 +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: Scala + radio: true + tvg_logo: radio/scala.png + tvg_name: Scala + url: https://stream-mz.planetradio.co.uk/scalahigh.aac +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: Classical 1 + radio: true + tvg_logo: radio/classical1.png + tvg_name: Classical 1 + url: http://185.80.221.113:8500/stream +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: LBC (national) + radio: true + tvg_logo: radio/lbc.png + tvg_name: LBC (national) + url: https://media-ssl.musicradio.com/LBCUK +- group_title: Radio-UK + category: uk + group_titles_kodi: + - Großbritannien + name: Times Radio + radio: true + tvg_logo: radio/timesradio.png + tvg_name: Times Radio + url: http://timesradio.wireless.radio/stream?ref=rf +- group_title: Radio-FR + category: fr + group_titles_kodi: + - Frankreich + name: Mouv' + radio: true + tvg_logo: radio/mouv.png + tvg_name: Mouv' + url: http://direct.mouv.fr/live/mouv-midfi.mp3 +- group_title: Radio-FR + category: fr + group_titles_kodi: + - Frankreich + name: Radio Nova + radio: true + tvg_logo: radio/radionova.png + tvg_name: Radio Nova + url: http://novazz.ice.infomaniak.ch/novazz-128.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: HitRadio Veronica + radio: true + tvg_logo: radio/hitradioveronica.png + tvg_name: HitRadio Veronica + url: http://playerservices.streamtheworld.com/api/livestream-redirect/SRGSTR09.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio 538 + radio: true + tvg_logo: radio/radio538.png + tvg_name: Radio 538 + url: https://playerservices.streamtheworld.com/api/livestream-redirect/RADIO538.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio 538 Zomer + radio: true + tvg_logo: radio/radio538.png + tvg_name: Radio 538 Zomer + url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR06.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio 538 Dance Department + radio: true + tvg_logo: radio/radio538.png + tvg_name: Radio 538 Dance Department + url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR01.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio 538 Drops + radio: true + tvg_logo: radio/radio538.png + tvg_name: Radio 538 Drops + url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR08.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio 538 Hitzone + radio: true + tvg_logo: radio/radio538.png + tvg_name: Radio 538 Hitzone + url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR11.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio 538 Ibiza + radio: true + tvg_logo: radio/radio538.png + tvg_name: Radio 538 Ibiza + url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR19.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio 538 Non-Stop + radio: true + tvg_logo: radio/radio538.png + tvg_name: Radio 538 Non-Stop + url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR09.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio 538 Party + radio: true + tvg_logo: radio/radio538.png + tvg_name: Radio 538 Party + url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR16.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio 538 Top 50 Radio + radio: true + tvg_logo: radio/radio538.png + tvg_name: Radio 538 Top 50 Radio + url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR13.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio 538 Verrückte Stunde + radio: true + tvg_logo: radio/radio538.png + tvg_name: Radio 538 Verrückte Stunde + url: https://playerservices.streamtheworld.com/api/livestream-redirect/TLPSTR21.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Radio Veronica + radio: true + tvg_logo: radio/radioveronica.png + tvg_name: Radio Veronica + url: http://playerservices.streamtheworld.com/api/livestream-redirect/VERONICA.mp3 +- group_title: Radio-NL + category: nl + group_titles_kodi: + - Niederlande + name: Sky Radio 101 FM + radio: true + tvg_logo: radio/skyradio101fm.png + tvg_name: Sky Radio 101 FM + url: http://playerservices.streamtheworld.com/api/livestream-redirect/SKYRADIO.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Planeta FM + radio: true + tvg_logo: radio/planetafm.png + tvg_name: Planeta FM + url: http://pla01.cdn.eurozet.pl:8700/pla-net.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Planeta FM Dope Hits + radio: true + tvg_logo: radio/planetafm.png + tvg_name: Planeta FM Dope Hits + url: http://pla02.cdn.eurozet.pl:8208/PLAHOU.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Planeta FM Electronic Wave + radio: true + tvg_logo: radio/planetafm.png + tvg_name: Planeta FM Electronic Wave + url: http://pla02.cdn.eurozet.pl:8228/PLAEDM.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Planeta FM Good Vibes + radio: true + tvg_logo: radio/planetafm.png + tvg_name: Planeta FM Good Vibes + url: http://pla01.cdn.eurozet.pl:8204/PLACHI.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Planeta FM Indie Day Mood + radio: true + tvg_logo: radio/planetafm.png + tvg_name: Planeta FM Indie Day Mood + url: http://pla02.cdn.eurozet.pl:8230/PLAIDM.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Radio ZET + radio: true + tvg_logo: radio/radiozet.png + tvg_name: Radio ZET + url: http://n-4-14.dcs.redcdn.pl/sc/o2/Eurozet/live/audio.livx?audio=5 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Radio ZET 2000 + radio: true + tvg_logo: radio/radiozet.png + tvg_name: Radio ZET 2000 + url: http://zet.cdn.eurozet.pl/ZET200.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Radio ZET 80 + radio: true + tvg_logo: radio/radiozet.png + tvg_name: Radio ZET 80 + url: http://zet.cdn.eurozet.pl/ZET080.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Radio ZET 90 + radio: true + tvg_logo: radio/radiozet.png + tvg_name: Radio ZET 90 + url: http://zet.cdn.eurozet.pl/ZET090.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Radio ZET Dance + radio: true + tvg_logo: radio/radiozet.png + tvg_name: Radio ZET Dance + url: http://zet.cdn.eurozet.pl/ZETDAN.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Radio ZET Hits + radio: true + tvg_logo: radio/radiozet.png + tvg_name: Radio ZET Hits + url: http://zet.cdn.eurozet.pl/ZETHIT.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Radio ZET Love + radio: true + tvg_logo: radio/radiozet.png + tvg_name: Radio ZET Love + url: https://zt.cdn.eurozet.pl/ZETLOV.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Radio ZET Party + radio: true + tvg_logo: radio/radiozet.png + tvg_name: Radio ZET Party + url: http://zet.cdn.eurozet.pl/ZETPAR.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Radio ZET PL + radio: true + tvg_logo: radio/radiozet.png + tvg_name: Radio ZET PL + url: http://zet.cdn.eurozet.pl/ZETPL1.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: Radio ZET Rock + radio: true + tvg_logo: radio/radiozet.png + tvg_name: Radio ZET Rock + url: http://zet.cdn.eurozet.pl/ZETROK.mp3 +- group_title: Radio-PL + category: pl + group_titles_kodi: + - Polen + name: RMF FM + radio: true + tvg_logo: radio/rmffm.png + tvg_name: RMF FM + url: http://195.150.20.243/RMFFM48 +- group_title: Radio-RO + category: ro + group_titles_kodi: + - Rumänien + name: Radio Manele + radio: true + tvg_logo: radio/radiomanele.png + tvg_name: Radio Manele + url: https://radio.ascultatare.ro/8044/stream +- group_title: Radio-IT + category: it + group_titles_kodi: + - Italien + - Südtirol + name: Radio 2000 + radio: true + tvg_logo: radio/radio2000it.png + tvg_name: Radio 2000 + url: http://159.69.217.78:8000/?radio=radio2000.mp3 diff --git a/sources/tv.yaml b/sources/tv.yaml index fbf672e6..45fa5b98 100644 --- a/sources/tv.yaml +++ b/sources/tv.yaml @@ -1,15 +1,16 @@ --- main: - group_title: IPTV-DE - group_title_kodi: Vollprogramm + group_titles_kodi: Vollprogramm name: Das Erste HD quality: hd tvg_id: DasErste.de tvg_logo: tv/daserstehd.png tvg_name: Das Erste HD + origin: https://www.ardmediathek.de/live url: https://mcdn.daserste.de/daserste/de/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Vollprogramm + group_titles_kodi: Vollprogramm name: ZDF HD quality: hd tvg_id: ZDF.de @@ -17,7 +18,7 @@ main: tvg_name: ZDF HD url: https://zdf-hls-15.akamaized.net/hls/live/2016498/de/veryhigh/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Vollprogramm + group_titles_kodi: Vollprogramm name: 3sat quality: sd tvg_id: 3sat.de @@ -25,7 +26,7 @@ main: tvg_name: 3sat url: https://zdf-hls-18.akamaized.net/hls/live/2016501/dach/veryhigh/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Vollprogramm + group_titles_kodi: Vollprogramm name: ARTE HD quality: hd tvg_id: ARTE.de @@ -33,7 +34,7 @@ main: tvg_name: ARTE HD url: https://artesimulcast.akamaized.net/hls/live/2030993/artelive_de/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Spartenprogramm + group_titles_kodi: Spartenprogramm name: ServusTV HD quality: hd tvg_id: ServusHD.de @@ -41,7 +42,7 @@ main: tvg_name: ServusTV HD url: https://stv-live.akamaized.net/hls/live/2031012/lingeoSTVDEwebPri/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Spartenprogramm + group_titles_kodi: Spartenprogramm name: ARD-alpha quality: hd tvg_id: ARD-alpha.de @@ -49,7 +50,7 @@ main: tvg_name: ARD-alpha url: https://mcdn.br.de/br/fs/ard_alpha/hls/de/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Spartenprogramm + group_titles_kodi: Spartenprogramm name: one HD quality: hd tvg_id: One.de @@ -57,7 +58,7 @@ main: tvg_name: one HD url: https://mcdn.one.ard.de/ardone/hls/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Spartenprogramm + group_titles_kodi: Spartenprogramm name: ZDFneo HD quality: hd tvg_id: ZDFneo.de @@ -65,7 +66,7 @@ main: tvg_name: ZDFneo HD url: https://zdf-hls-16.akamaized.net/hls/live/2016499/de/veryhigh/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Spartenprogramm + group_titles_kodi: Spartenprogramm name: ZDFinfo HD quality: hd tvg_id: ZDFinfo.de @@ -73,7 +74,7 @@ main: tvg_name: ZDFinfo HD url: https://zdf-hls-17.akamaized.net/hls/live/2016500/de/veryhigh/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Spartenprogramm + group_titles_kodi: Spartenprogramm name: Welt der Wunder quality: sd tvg_id: WeltderWunder.de @@ -81,7 +82,7 @@ main: tvg_name: Welt der Wunder url: https://wdw.iptv-playoutcenter.de/wdw/wdw1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Nachrichten + group_titles_kodi: Nachrichten name: phoenix quality: hd tvg_id: phoenix.de @@ -89,7 +90,7 @@ main: tvg_name: phoenix HD url: https://zdf-hls-19.akamaized.net/hls/live/2016502/de/veryhigh/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Nachrichten + group_titles_kodi: Nachrichten name: tagesschau24 quality: hd tvg_id: tagesschau24.de @@ -97,7 +98,9 @@ main: tvg_name: tagesschau24 url: https://tagesschau.akamaized.net/hls/live/2020115/tagesschau/tagesschau_1/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Nachrichten;Dokumentationen + group_titles_kodi: + - Nachrichten + - Dokumentationen name: WELT quality: hd tvg_id: WELT.de @@ -105,7 +108,7 @@ main: tvg_name: WELT url: https://w-live2weltcms.akamaized.net/hls/live/2041019/Welt-LivePGM/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Nachrichten + group_titles_kodi: Nachrichten name: WELT News (Dauerschleife) quality: sd tvg_id: WELTNewsLoop.de @@ -113,7 +116,7 @@ main: tvg_name: WELT News (loop) url: https://w-news2weltcms.akamaized.net/hls/live/2040885/Welt-NextNews/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Nachrichten + group_titles_kodi: Nachrichten name: euronews deutsch quality: hd tvg_id: euronews.com @@ -121,7 +124,9 @@ main: tvg_name: euronews deutsch url: https://rakuten-euronews-5-de.samsung.wurl.com/manifest/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Nachrichten;Dokumentationen + group_titles_kodi: + - Nachrichten + - Dokumentationen name: Bild quality: hd tvg_id: BILD.de @@ -129,14 +134,16 @@ main: tvg_name: Bild url: https://bild.personalstream.tv/v1/master.m3u8 - group_title: IPTV-AT - group_title_kodi: International;Sport + group_titles_kodi: + - International + - Sport name: Red Bull TV quality: hd tvg_logo: tv/redbulltv.png tvg_name: Red Bull TV url: https://rbmn-live.akamaized.net/hls/live/590964/BoRB-AT/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Spartenprogramm + group_titles_kodi: Spartenprogramm name: ANIXE HD quality: hd tvg_id: Anixe.de @@ -144,7 +151,7 @@ main: tvg_name: ANIXE HD url: https://ma.anixa.tv/clips/stream/anixehd/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Sport + group_titles_kodi: Sport name: More than Sports TV quality: hd tvg_id: morethansports.de @@ -152,7 +159,7 @@ main: tvg_name: More than Sports TV url: https://mts1.iptv-playoutcenter.de/mts/mts-web/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Sport + group_titles_kodi: Sport name: DAZN FAST+ quality: hd tvg_id: daznfastplus.de @@ -160,7 +167,9 @@ main: tvg_name: DAZN FAST+ url: https://d2606t9eyamzl3.cloudfront.net/v1/master/3722c60a815c199d9c0ef36c5b73da68a62b09d1/cc-ia6qw6xh7nd2w-ssai-prd/out/v1/64dc66ee167d48db833377ab85217dfd/DAZN-FAST-HLS-CMAF-DRM/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Filme / Serien;Kinder / Jugend + group_titles_kodi: + - Filme / Serien + - Kinder / Jugend name: RiC quality: sd tvg_id: RiC.de @@ -168,7 +177,7 @@ main: tvg_name: RiC url: https://www.youtube.com/embed/vRgu-o0chwI - group_title: IPTV-DE - group_title_kodi: Kinder / Jugend + group_titles_kodi: Kinder / Jugend name: KiKA quality: hd tvg_id: Kika.de @@ -176,7 +185,7 @@ main: tvg_name: KiKA url: https://kikageohls.akamaized.net/hls/live/2022693/livetvkika_de/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Kinder / Jugend + group_titles_kodi: Kinder / Jugend name: Nickelodeon quality: hd tvg_id: Nickelodeon.de @@ -184,7 +193,7 @@ main: tvg_name: Nickelodeon url: https://0d26a00dfbb1.airspace-cdn.cbsivideo.com/nick1999/master/nick1999.m3u8 - group_title: IPTV-AT - group_title_kodi: Musik + group_titles_kodi: Musik name: Ö3-VisualRadio quality: hd tvg_id: oe3.at @@ -192,7 +201,7 @@ main: tvg_name: Ö3-VisualRadio url: https://studiocam-oe3.mdn.ors.at/out/u/studiocam_oe3/q6a/manifest.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: SWR3-VisualRadio quality: hd tvg_id: swr3.de @@ -200,7 +209,7 @@ main: tvg_name: SWR3-VisualRadio url: https://swrswr3vr-hls.akamaized.net/hls/live/2018683/swr3vr/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: DASDING-VisualRadio quality: hd tvg_id: Dasding.de @@ -208,7 +217,7 @@ main: tvg_name: DASDING-VisualRadio url: https://swrdasdingvr-hls.akamaized.net/hls/live/2018681/dasdingvr/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: UNSERDING-VisualRadio quality: hd tvg_id: Unserding.de @@ -216,7 +225,7 @@ main: tvg_name: UNSERDING-VisualRadio url: https://srunserding-lh.akamaihd.net/i/visualradio_ud@197013/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: Rockland TV quality: hd tvg_id: Rockland.de @@ -224,7 +233,7 @@ main: tvg_name: Rockland TV url: https://live.creacast.com/rockland-radio/smil:rockland-radio.smil/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: MTV Germany quality: hd tvg_id: MTVGermany.de @@ -232,7 +241,7 @@ main: tvg_name: MTV Germany url: https://0d26a00dfbb1.airspace-cdn.cbsivideo.com/mtvg18ef/master/mtvg18ef.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: DELUXE MUSIC quality: hd tvg_id: DeLuxeMusic.de @@ -240,7 +249,7 @@ main: tvg_name: DELUXE MUSIC url: https://sdn-global-live-streaming-packager-cache.3qsdn.com/13456/13456_264_live.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: Folx TV quality: hd tvg_id: FolxTV.de @@ -248,7 +257,7 @@ main: tvg_name: Folx TV url: https://folxplay-t.b-cdn.net/streams/ch-4/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: One 1 Music TV quality: hd tvg_id: One1MusicTV.de @@ -256,7 +265,7 @@ main: tvg_name: One 1 Music TV url: https://folxplay-t.b-cdn.net/streams/ch-3/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: Zwei 2 Music TV quality: hd tvg_id: Zwei2MusicTV.de @@ -264,7 +273,7 @@ main: tvg_name: Zwei 2 Music TV url: https://folxplay-t.b-cdn.net/streams/ch-2/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: Deutsches Musik Fernsehen quality: hd tvg_id: DeutschesMusikFernsehen.de @@ -272,7 +281,7 @@ main: tvg_name: Deutsches Musik Fernsehen url: https://d-m-f.iptv-playoutcenter.de/dmf/dmf1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: Schlager Deluxe quality: hd tvg_id: SchlagerDeluxe.de @@ -280,7 +289,7 @@ main: tvg_name: Schlager Deluxe url: https://sdn-global-live-streaming-packager-cache.3qsdn.com/26658/26658_264_live.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: Magenta Musik 360 1 quality: hd tvg_id: MagentaMusik1.de @@ -288,7 +297,7 @@ main: tvg_name: Magenta Musik 360 1 url: https://streaming.magenta-musik-360.de/csm/573870/magentamusik1/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Musik + group_titles_kodi: Musik name: Magenta Musik 360 2 quality: hd tvg_id: MagentaMusik2.de @@ -296,7 +305,7 @@ main: tvg_name: Magenta Musik 360 2 url: https://streaming.magenta-musik-360.de/csm/573871/magentamusik2/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Religion + group_titles_kodi: Religion name: Bibel TV quality: sd tvg_id: BibelTV.de @@ -304,7 +313,7 @@ main: tvg_name: Bibel TV url: https://bibeltv01.iptv-playoutcenter.de/bibeltv01/bibeltv01.stream_all/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Religion + group_titles_kodi: Religion name: Bibel TV Impuls quality: sd tvg_id: BibelTVImpuls.de @@ -312,7 +321,7 @@ main: tvg_name: Bibel TV Impuls url: https://bibeltv02.iptv-playoutcenter.de/bibeltv02/bibeltv02.stream_all/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Religion + group_titles_kodi: Religion name: Bibel TV Musik quality: sd tvg_id: BibelTVMusik.de @@ -320,7 +329,7 @@ main: tvg_name: Bibel TV Musik url: http://bibeltv03.iptv-playoutcenter.de/bibeltv03/bibeltv03.stream_all/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Religion + group_titles_kodi: Religion name: K-TV quality: sd tvg_id: KTV.de @@ -328,7 +337,7 @@ main: tvg_name: K-TV url: http://d1pz8zear993v8.cloudfront.net/hlsme/kathtv.m3u8 - group_title: IPTV-DE - group_title_kodi: Religion + group_titles_kodi: Religion name: EWTN katholisches TV quality: sd tvg_id: EWTN.de @@ -336,7 +345,7 @@ main: tvg_name: EWTN katholisches TV url: https://cdn3.wowza.com/1/ZUkxSDBrZHlMbjVn/ZkhNRFNZ/hls/live/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Religion + group_titles_kodi: Religion name: ERF 1 quality: hd tvg_id: ERFeins.de @@ -344,7 +353,7 @@ main: tvg_name: ERF 1 url: https://bcovlive-a.akamaihd.net/8d3c5f8c76724987a30eb69d4ba6ca80/eu-central-1/6194387526001/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Sonstiges + group_titles_kodi: Sonstiges name: health.tv quality: hd tvg_id: Health.de @@ -352,14 +361,14 @@ main: tvg_name: health.tv url: http://62.67.13.53:1935/HealthTV/ghtv_live_master.stream/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Sonstiges + group_titles_kodi: Sonstiges name: VISIT-X.tv quality: sd tvg_logo: tv/visitxtv.png tvg_name: VISIT-X.tv url: https://stream.visit-x.tv/vxtv/live/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Sonstiges + group_titles_kodi: Sonstiges name: Wir24TV quality: hd tvg_id: "wir24.tv" @@ -368,7 +377,7 @@ main: url: https://edge14.vedge.infomaniak.com/livecast/ik:wir24tv_hms/manifest.m3u8 shop: - group_title: IPTV-DE - group_title_kodi: Teleshopping + group_titles_kodi: Teleshopping name: 1-2-3.tv quality: sd tvg_id: 123.tv.de @@ -376,7 +385,7 @@ shop: tvg_name: 1-2-3.tv url: https://123tv-mx1.flex-cdn.net/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Teleshopping + group_titles_kodi: Teleshopping name: pearl.tv quality: hd tvg_id: Pearl.tv.de @@ -384,7 +393,7 @@ shop: tvg_name: pearl.tv url: https://www.youtube.com/embed/d-dpxzoYJ4A - group_title: IPTV-DE - group_title_kodi: Teleshopping + group_titles_kodi: Teleshopping name: QVC quality: hd tvg_id: QVC.de @@ -392,7 +401,7 @@ shop: tvg_name: QVC url: https://d2mn03dhv5o3g8.cloudfront.net/live/qvcde_main_clean/bitrate1.isml/3/prog_index.m3u8 - group_title: IPTV-DE - group_title_kodi: Teleshopping + group_titles_kodi: Teleshopping name: QVC PLUS quality: hd tvg_id: QVCPlus.de @@ -400,14 +409,14 @@ shop: tvg_name: QVC PLUS url: https://d2mn03dhv5o3g8.cloudfront.net/live/qvcde_plus_clean/bitrate1.isml/3/prog_index.m3u8 - group_title: IPTV-DE - group_title_kodi: Teleshopping + group_titles_kodi: Teleshopping name: QVC Beauty & Style quality: hd tvg_logo: tv/qvcbeautystyle.png tvg_name: QVC Beauty & Style url: https://d2mn03dhv5o3g8.cloudfront.net/live/qvcde_beauty_clean/bitrate1.isml/3/prog_index.m3u8 - group_title: IPTV-DE - group_title_kodi: Teleshopping + group_titles_kodi: Teleshopping name: SonnenklarTV HD quality: hd tvg_id: sonnenklar.tv @@ -416,7 +425,7 @@ shop: url: http://euvia.cdn.ses-ps.com/HLS-Live/index.m3u8 regional: - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR HD quality: hd tvg_id: WDRFernsehen.de @@ -424,7 +433,7 @@ regional: tvg_name: WDR HD url: https://wdrfs247.akamaized.net/hls/live/681509/wdr_msl4_fs247/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Aachen HD quality: hd tvg_id: WDRFernsehen.de @@ -432,7 +441,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2018019-b/wdrlz_aachen/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Bonn HD quality: hd tvg_id: WDRFernsehen.de @@ -440,7 +449,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2018021-b/wdrlz_bonn/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Bergisches Land HD quality: hd tvg_id: WDRFernsehen.de @@ -448,7 +457,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2018028-b/wdrlz_wuppertal/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Dortmund HD quality: hd tvg_id: WDRFernsehen.de @@ -456,7 +465,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2018022-b/wdrlz_dortmund/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Düsseldorf HD quality: hd tvg_id: WDRFernsehen.de @@ -464,7 +473,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2018023-b/wdrlz_duesseldorf/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Duisburg HD quality: hd tvg_id: WDRFernsehen.de @@ -472,7 +481,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2018024-b/wdrlz_duisburg/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Köln HD quality: hd tvg_id: WDRFernsehen.de @@ -480,7 +489,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2023550-b/wdrlz_koeln/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Münsterland HD quality: hd tvg_id: WDRFernsehen.de @@ -488,7 +497,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2018025-b/wdrlz_muensterland/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Ostwestfalen HD quality: hd tvg_id: WDRFernsehen.de @@ -496,7 +505,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2018026-b/wdrlz_bielefeld/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Südwestfalen HD quality: hd tvg_id: WDRFernsehen.de @@ -504,7 +513,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2018020-b/wdrlz_siegen/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: WDR Ruhr HD quality: hd tvg_id: WDRFernsehen.de @@ -512,7 +521,7 @@ regional: tvg_name: WDR HD url: https://wdrlokalzeit.akamaized.net/hls/live/2018027-b/wdrlz_essen/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: SWR Baden-Württemberg HD quality: hd tvg_id: SWRFernsehen.de @@ -520,7 +529,7 @@ regional: tvg_name: "SWR Baden-Württemberg HD " url: https://swrbwd-hls.akamaized.net/hls/live/2018672/swrbwd/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: SWR Rheinland-Pfalz HD quality: hd tvg_id: SWRFernsehen-rp.de @@ -528,7 +537,7 @@ regional: tvg_name: SWR Rheinland-Pfalz HD url: https://swrrpd-hls.akamaized.net/hls/live/2018676/swrrpd/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: NDR Niedersachsen HD quality: hd tvg_id: NDRFernsehen.de @@ -536,7 +545,7 @@ regional: tvg_name: NDR Niedersachsen HD url: https://mcdn.ndr.de/ndr/hls/ndr_fs/ndr_nds/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: NDR Schleswig-Holstein HD quality: hd tvg_id: ndr.de @@ -544,7 +553,7 @@ regional: tvg_name: NDR Schleswig-Holstein HD url: https://mcdn.ndr.de/ndr/hls/ndr_fs/ndr_sh/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: NDR Mecklenburg-Vorpommern HD quality: hd tvg_id: ndr.de @@ -552,7 +561,7 @@ regional: tvg_name: NDR Mecklenburg-Vorpommern HD url: https://mcdn.ndr.de/ndr/hls/ndr_fs/ndr_mv/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: NDR Hamburg HD quality: hd tvg_id: ndr.de @@ -560,7 +569,7 @@ regional: tvg_name: NDR Hamburg HD url: https://mcdn.ndr.de/ndr/hls/ndr_fs/ndr_hh/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: Radio Bremen TV HD quality: hd tvg_id: RadioBremen.de @@ -568,7 +577,7 @@ regional: tvg_name: Radio Bremen TV HD url: https://rbhlslive.akamaized.net/hls/live/2020435/rbfs/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: BR Fernsehen Nord HD quality: hd tvg_id: BR.de @@ -576,7 +585,7 @@ regional: tvg_name: BR Fernsehen Nord HD url: https://mcdn.br.de/br/fs/bfs_nord/hls/de/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: BR Fernsehen Süd HD quality: hd tvg_id: BRFernsehen.de @@ -584,7 +593,7 @@ regional: tvg_name: BR Fernsehen Süd HD url: https://brcdn.vo.llnwd.net/br/fs/bfs_sued/hls/de/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: MDR Sachsen HD quality: hd tvg_id: MDRSachsen.de @@ -592,7 +601,7 @@ regional: tvg_name: MDR Sachsen HD url: https://mdrtvsnhls.akamaized.net/hls/live/2016928/mdrtvsn/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: MDR Sachsen-Anhalt HD quality: hd tvg_id: MDRS-Anhalt.de @@ -600,7 +609,7 @@ regional: tvg_name: MDR Sachsen-Anhalt HD url: https://mdrtvsahls.akamaized.net/hls/live/2016879/mdrtvsa/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: MDR Thüringen HD quality: sd tvg_id: MDRThuringen.de @@ -608,7 +617,7 @@ regional: tvg_name: MDR Thüringen HD url: https://mdrtvthhls.akamaized.net/hls/live/2016880/mdrtvth/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: hr-fernsehen quality: hd tvg_id: HR.de @@ -616,7 +625,7 @@ regional: tvg_name: hr-fernsehen url: https://hrhlsde.akamaized.net/hls/live/2024526/hrhlsde/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: rbb Berlin HD quality: hd tvg_id: rbbBerlin.de @@ -624,7 +633,7 @@ regional: tvg_name: rbb Berlin HD url: https://rbb-hls-berlin.akamaized.net/hls/live/2017824/rbb_berlin/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: rbb Brandenburg HD quality: hd tvg_id: rbbBrandenburg.de @@ -632,7 +641,7 @@ regional: tvg_name: rbb Brandenburg HD url: https://rbb-hls-brandenburg.akamaized.net/hls/live/2017825/rbb_brandenburg/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: SR Fernsehen HD quality: sd tvg_id: SRFernsehen.de @@ -640,7 +649,7 @@ regional: tvg_name: SR Fernsehen HD url: https://srfs.akamaized.net/hls/live/689649/srfsgeo/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: Deutsche Welle quality: sd tvg_id: DeutscheWelleDE.de @@ -648,7 +657,7 @@ regional: tvg_name: Deutsche Welle url: https://dwamdstream111.akamaized.net/hls/live/2017972/dwstream111/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: Deutsche Welle+ quality: sd tvg_id: DeutscheWelleDE+.de @@ -656,7 +665,7 @@ regional: tvg_name: Deutsche Welle+ url: https://dwamdstream110.akamaized.net/hls/live/2017971/dwstream110/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: Deutsche Welle (EN) quality: sd tvg_id: DeutscheWelleEN.de @@ -664,7 +673,7 @@ regional: tvg_name: Deutsche Welle (EN) url: https://dwamdstream107.akamaized.net/hls/live/2017968/dwstream107/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: Südthüringer Regionalfernsehen quality: hd tvg_id: srf-online.de @@ -672,7 +681,7 @@ regional: tvg_name: Südthüringer Regionalfernsehen url: https://58de7a369a9c4.streamlock.net/srf/stream_720p/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: Rennsteig.tv quality: hd tvg_id: rennsteig.tv @@ -680,7 +689,7 @@ regional: tvg_name: Rennsteig.tv url: http://wowza.telvi.de/rennsteigtv/stream_720p/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Regional + group_titles_kodi: Regional name: h1 quality: hd tvg_id: h-eins.tv @@ -689,7 +698,7 @@ regional: url: https://5857499ee635b.streamlock.net/heinstv-live/_definst_/smil:livestream.smil/playlist.m3u8 local: - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: a.tv quality: hd tvg_id: a.tv.de @@ -697,14 +706,14 @@ local: tvg_name: a.tv url: https://augsburgtv.iptv-playoutcenter.de/augsburgtv/augsburgtv.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: ALEX Berlin quality: sd tvg_logo: tv/alexberlin.png tvg_name: ALEX Berlin url: https://alex-stream.rosebud-media.de/live/alexlivetv40.smil/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: allgäu.tv quality: sd tvg_id: AllgauTV.de @@ -712,28 +721,28 @@ local: tvg_name: allgäu.tv url: https://stream01.welocal.stream/stream/fhd-allgaeutv_25679/ngrp:stream_all/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Baden TV quality: hd tvg_logo: tv/badentv.png tvg_name: Baden TV url: http://cdn.icu.de/rtplive/btv.stream/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Chemnitz Fernsehen quality: sd tvg_logo: tv/chemnitzfernsehen.png tvg_name: Chemnitz Fernsehen url: https://chemnitz.iptv-playoutcenter.de/chemnitz/chemnitzfernsehen.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Dresden Fernsehen quality: sd tvg_logo: tv/dresdenfernsehen.png tvg_name: Dresden Fernsehen url: https://dresden.iptv-playoutcenter.de/dresden/dresdenfernsehen.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Franken Fernsehen quality: sd tvg_id: FrankenTV.de @@ -741,7 +750,7 @@ local: tvg_name: Franken Fernsehen url: https://s3.welocal.world/frankenfernsehen/media/191627/videos/hls.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Hamburg 1 quality: hd tvg_id: Hamburg1.de @@ -749,28 +758,28 @@ local: tvg_name: Hamburg 1 url: https://hamburg1-jw.cdn.vustreams.com/live/09120205-afa3-4048-a965-318eb0cacffc/live.isml/.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: KabelJournal quality: sd tvg_logo: tv/kabeljournal.png tvg_name: KabelJournal url: https://5acade5fc0c29.streamlock.net/kabeljournal/live2020.stream/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: L-TV quality: hd tvg_logo: tv/ltv.png tvg_name: L-TV url: https://live2.telvi.de/hls/l-tv_s1.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Leipzig Fernsehen quality: sd tvg_logo: tv/leipzigfernsehen.png tvg_name: Leipzig Fernsehen url: https://leipzig.iptv-playoutcenter.de/leipzig/leipzigfernsehen.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: münchen.tv quality: sd tvg_id: MunchenTV.de @@ -778,7 +787,7 @@ local: tvg_name: münchen.tv url: https://muenchentv.iptv-playoutcenter.de/muenchentv/muenchentv.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: MyTVplus quality: sd tvg_id: MyTVplus.de @@ -786,280 +795,280 @@ local: tvg_name: MyTVplus url: https://mytvplus.iptv-playoutcenter.de/mytvplus/mytvplus.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: noa4 Hamburg HD quality: hd tvg_logo: tv/noa4.png tvg_name: noa4 Hamburg HD url: https://hls1.wtnet.de/noa4hh/apple/wifi6500.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: noa4 Norderstedt HD quality: hd tvg_logo: tv/noa4.png tvg_name: noa4 Norderstedt HD url: https://hls1.wtnet.de/noa4/apple/wifi6500.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: NRWision HD quality: sd tvg_logo: tv/nrwision.png tvg_name: NRWision HD url: https://fms.nrwision.de/live/livestreamHD.stream_source/chunklist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Oberpfalz TV quality: hd tvg_logo: tv/oberpfalztv.png tvg_name: Oberpfalz TV url: https://oberpfalztv.iptv-playoutcenter.de/oberpfalztv/oberpfalztv.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK4 (Adenau Andernach Koblenz Neuwied) quality: sd tvg_logo: tv/okkoblenz.png tvg_name: OK4 (Adenau Andernach Koblenz Neuwied) url: https://s.ok54.de/abr_ok4/live/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK54 (Trier) quality: sd tvg_logo: tv/oktrier.png tvg_name: OK54 (Trier) url: https://s.ok54.de/ott/webstream/tv/webstream_720p/chunks.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Kaiserslautern quality: sd tvg_logo: tv/okkaiserslautern.png tvg_name: OK Kaiserslautern url: https://s.ok54.de/abr_okkl/webstream/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK naheTV (Idar-Oberstein) quality: sd tvg_logo: tv/oknahetv.png tvg_name: OK naheTV (Idar-Oberstein) url: https://s.ok54.de/nahetv/webstream/chunks.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK RheinLokal (Worms) quality: sd tvg_logo: tv/okrheinlokal.png tvg_name: OK RheinLokal (Worms) url: https://s.ok54.de/rheinlokal/rheinlOKal_stream/chunks.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Suedwestpfalz quality: sd tvg_logo: tv/oksuedwestpfalz.png tvg_name: OK Suedwestpfalz url: https://s.ok54.de/okswp/test/chunks.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Weinstraße (Neustadt) quality: sd tvg_logo: tv/okweinstrasse.png tvg_name: OK Weinstraße (Neustadt) url: https://s.ok54.de/okweinstrasse/okweinstrasse/chunks.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Flensburg quality: sd tvg_logo: tv/fltv.png tvg_name: OK Flensburg url: https://d1lv1lpzlrjn3y.cloudfront.net/play/hls/flensburgtv/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Kiel quality: sd tvg_logo: tv/kieltv.png tvg_name: OK Kiel url: https://live-cdn.oksh.de/play/hls/kieltv/index.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Merseburg-Querfurt quality: sd tvg_logo: tv/okmerseburg.png tvg_name: OK Merseburg-Querfurt url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:ok-merseburg_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Rhein-Main (Offenbach Frankfurt) quality: sd tvg_logo: tv/okrheinmain.png tvg_name: OK Rhein-Main (Offenbach Frankfurt) url: https://s.ok54.de/mok-rm/mok-rm/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Fulda quality: sd tvg_logo: tv/okfulda.png tvg_name: OK Fulda url: https://s.ok54.de/mok-fu/livestream/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Gießen quality: sd tvg_logo: tv/okgiessen.png tvg_name: OK Gießen url: https://s.ok54.de/mok-gi/mok-gi/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Kassel quality: sd tvg_logo: tv/okkassel.png tvg_name: OK Kassel url: https://s.ok54.de/mok-ks/kassel/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Ludwigshafen quality: sd tvg_logo: tv/okludwigshafen.png tvg_name: OK Ludwigshafen url: https://s.ok54.de/oklu/livestream/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Dessau quality: sd tvg_logo: tv/okdessau.png tvg_name: OK Dessau url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:ok-dessau_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Magdeburg quality: sd tvg_logo: tv/okmagdeburg.png tvg_name: OK Magdeburg url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:ok-magdeburg_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Salzwedel quality: sd tvg_logo: tv/oksalzwedel.png tvg_name: OK Salzwedel url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:ok-salzwedel_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Stendal quality: sd tvg_logo: tv/okstendal.png tvg_name: OK Stendal url: http://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:ok-stendal_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: OK Wernigerode quality: sd tvg_logo: tv/okwernigerode.png tvg_name: OK Wernigerode url: http://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:ok-wernigerode_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Tide TV quality: sd tvg_logo: tv/tidetv.png tvg_name: Tide TV url: https://5889e7d0d6e28.streamlock.net/tide-live/_definst_/smil:livestream.smil/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: BLK Regional TV quality: sd tvg_logo: tv/blkregionaltv.png tvg_name: BLK Regional TV url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:BLKonline_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: kulturmd quality: sd tvg_logo: tv/kulturmd.png tvg_name: kulturmd url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:kulturmd_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: MDF.1 quality: sd tvg_logo: tv/mdf1.png tvg_name: MDF.1 url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:mdf1_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: PUNKTum quality: sd tvg_logo: tv/punktum.png tvg_name: PUNKTum url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:punktum_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: RFH quality: sd tvg_logo: tv/rfh.png tvg_name: RFH url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:RFH_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: WTV (OK Wettin) quality: sd tvg_logo: tv/wtv.png tvg_name: WTV (OK Wettin) url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:ok-wettin_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: RAN1 quality: sd tvg_logo: tv/ran1.png tvg_name: RAN1 url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:ran1_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: RBW quality: sd tvg_logo: tv/rbw.png tvg_name: RBW url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:rbw_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: TV Halle quality: sd tvg_logo: tv/tvhalle.png tvg_name: TV Halle url: https://58bd5b7a98e04.streamlock.net/medienasa-live/_definst_/mp4:tvhalle_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: ELBEKANAL quality: sd tvg_logo: tv/elbekanal.png tvg_name: ELBEKANAL url: http://62.113.210.250/medienasa-live/_definst_/mp4:elbe_high/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: seenluft24 quality: sd tvg_logo: tv/seenluft24.png tvg_name: seenluft24 url: https://5856e1a25f71a.streamlock.net/easycast7-live/_definst_/mp4:livestreamhd20/chunklist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: oldenburg eins quality: hd tvg_logo: tv/oldenburgeins.png tvg_name: oldenburg eins url: https://oeins.de/live/studio.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Potsdam TV quality: hd tvg_logo: tv/potsdamtv.png tvg_name: Potsdam TV url: https://live2.telvi.de/hls/hauptstadttv_hd720.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Regio TV Schwaben quality: hd tvg_logo: tv/regiotvschwaben.png tvg_name: Regio TV Schwaben url: https://stream05.stream.welocal.world/stream/rsc/ngrp:rsc.stream_all/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: RFO quality: sd tvg_id: Oberbayern.de @@ -1067,14 +1076,14 @@ local: tvg_name: RFO url: https://stream01.stream.welocal.world/stream/fhd-rfo_66876/ngrp:stream_all/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Rhein Neckar Fernsehen quality: sd tvg_logo: tv/rnf.png tvg_name: Rhein Neckar Fernsehen url: https://rnf.iptv-playoutcenter.de/rnf/rnf.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: rheinmaintv quality: sd tvg_id: rheinmaintv.de @@ -1082,14 +1091,14 @@ local: tvg_name: rheinmaintv url: https://586fb512206e4.streamlock.net/rheinmaintv-live/_definst_/mp4:livestream/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Sylt1 quality: sd tvg_logo: tv/sylt1.png tvg_name: Sylt1 url: https://5aec29c5dd23b.streamlock.net:8443/sylt1/_definst_/sylt1_high1.stream/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Niederbayern TV Passau quality: sd tvg_id: niederbayerntv.de @@ -1097,7 +1106,7 @@ local: tvg_name: Niederbayern TV Passau url: https://stream03.stream.welocal.world/stream/npa/ngrp:npa.stream_all/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: tv.ingolstadt quality: sd tvg_id: tvingolstadt.de @@ -1105,14 +1114,14 @@ local: tvg_name: tv.ingolstadt url: https://stream01.welocal.stream/stream/fhd-tvingolstadt_44349/ngrp:stream_all/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: TV Mittelrhein quality: hd tvg_logo: tv/tvmittelrhein.png tvg_name: TV Mittelrhein url: https://live2.telvi.de/hls/tvm_hd720.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: TV Mainfranken quality: hd tvg_id: tvmainfranken.de @@ -1120,14 +1129,14 @@ local: tvg_name: TV Mainfranken url: https://stream01.stream.welocal.world/stream/tvm/ngrp:tvm.stream_all/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: TV Würzburg quality: sd tvg_logo: tv/wuerzburgtv.png tvg_name: TV Würzburg url: https://tvtouringw.iptv-playoutcenter.de/tvtouringw/tvtouringw.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: tv.berlin quality: sd tvg_id: TVBerlin.de @@ -1135,14 +1144,14 @@ local: tvg_name: tv.berlin url: https://58de7a369a9c4.streamlock.net/tvb/7649_7Bpr2XK4zCR6jNV/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: TVA quality: hd tvg_logo: tv/tva.png tvg_name: TVA url: https://tvaktuellr.iptv-playoutcenter.de/tvaktuellr/tvaktuellr.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: TVO quality: sd tvg_id: tvo.de @@ -1150,28 +1159,28 @@ local: tvg_name: TVO url: https://tvoberfranken.iptv-playoutcenter.de/tvoberfranken/tvoberfranken.stream_1/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Westerwald TV quality: hd tvg_logo: tv/westerwaldtv.png tvg_name: Westerwald TV url: https://live2.telvi.de/hls/wwtv.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: teltOwkanal quality: sd tvg_logo: tv/teltOwkanal.png tvg_name: teltOwkanal url: https://5856e1a25f71a.streamlock.net/easycast8-live/_definst_/mp4:livestreamhd8/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: Ems TV quality: sd tvg_logo: tv/emstv.png tvg_name: emstv url: https://5889e7d0d6e28.streamlock.net/ev1tv-live/_definst_/mp4:livestream/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Lokal + group_titles_kodi: Lokal name: FRF24 quality: sd tvg_logo: tv/frf24.png @@ -1179,7 +1188,7 @@ local: url: https://583548fa0d82b.streamlock.net/friesischerRundfunk-live/_definst_/mp4:friesischerrundfunk/playlist.m3u8 extra: - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ARD Event 1 quality: hd tvg_id: ARDEvent1.de @@ -1187,7 +1196,7 @@ extra: tvg_name: ARD Event 1 url: http://wdrardevent1-lh.akamaihd.net/i/ardevent1_weltweit@566648/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ARD Event 2 quality: hd tvg_id: ARDEvent2.de @@ -1195,7 +1204,7 @@ extra: tvg_name: ARD Event 2 url: https://ardevent2.akamaized.net/hls/live/681512/ardevent2_geo/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ZDF Event 1 quality: hd tvg_id: ZDFEvent1.de @@ -1203,7 +1212,7 @@ extra: tvg_name: ZDF Event 1 url: http://zdf0304-lh.akamaihd.net/i/de03_v1@392855/index_3096_av-p.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ZDF Event 2 quality: hd tvg_id: ZDFEvent2.de @@ -1211,7 +1220,7 @@ extra: tvg_name: ZDF Event 2 url: http://zdf0304-lh.akamaihd.net/i/de04_v1@392856/index_3096_av-p.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ZDF Event 3 quality: hd tvg_id: ZDFEvent.de3 @@ -1219,7 +1228,7 @@ extra: tvg_name: ZDF Event 3 url: http://zdf0506-lh.akamaihd.net/i/de05_v1@392857/index_3096_av-p.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ZDF Event 4 quality: hd tvg_id: ZDFEvent4.de @@ -1227,7 +1236,7 @@ extra: tvg_name: ZDF Event 4 url: http://zdf0506-lh.akamaihd.net/i/de06_v1@392858/index_3096_av-p.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ZDF Event 5 quality: hd tvg_id: ZDFEvent5.de @@ -1235,7 +1244,7 @@ extra: tvg_name: ZDF Event 5 url: http://zdf0708-lh.akamaihd.net/i/de07_v1@392868/index_3096_av-p.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ZDF Event 6 quality: hd tvg_id: ZDFEvent6.de @@ -1243,7 +1252,7 @@ extra: tvg_name: ZDF Event 6 url: http://zdf0708-lh.akamaihd.net/i/de08_v1@392869/index_229_av-b.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ARTE Event 1 quality: hd tvg_id: ArteEvent1.de @@ -1251,7 +1260,7 @@ extra: tvg_name: ARTE Event 1 url: https://arteconcerthls.akamaized.net/hls/live/2025494/channel01/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ARTE Event 2 quality: hd tvg_id: ArteEvent2.de @@ -1259,7 +1268,7 @@ extra: tvg_name: ARTE Event 2 url: https://arteconcerthls.akamaized.net/hls/live/2025495/channel02/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ARTE Event 3 quality: hd tvg_id: ArteEvent3.de @@ -1267,7 +1276,7 @@ extra: tvg_name: ARTE Event 3 url: https://arteconcerthls.akamaized.net/hls/live/2025496/channel03/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ARTE Event 4 quality: hd tvg_id: ArteEvent4.de @@ -1275,7 +1284,7 @@ extra: tvg_name: ARTE Event 4 url: https://arteconcerthls.akamaized.net/hls/live/2025497/channel04/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ARTE Event 5 quality: hd tvg_id: ArteEvent5.de @@ -1283,7 +1292,7 @@ extra: tvg_name: ARTE Event 5 url: https://arteconcerthls.akamaized.net/hls/live/2025498/channel05/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: ARTE Event 6 quality: hd tvg_id: ArteEvent6.de @@ -1291,7 +1300,7 @@ extra: tvg_name: ARTE Event 6 url: https://arteconcerthls.akamaized.net/hls/live/2025499/channel06/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: WDR Event 1 quality: hd tvg_id: WDREvent1.de @@ -1299,7 +1308,7 @@ extra: tvg_name: WDR Event 1 url: https://wdrardevent1-lh.akamaihd.net/i/ardevent1_weltweit@566648/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: WDR Event 2 quality: hd tvg_id: WDREvent2.de @@ -1307,7 +1316,7 @@ extra: tvg_name: WDR Event 2 url: https://ardevent2.akamaized.net/hls/live/681512/ardevent2_geo/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: WDR Event 3 quality: hd tvg_id: WDREvent3.de @@ -1315,7 +1324,7 @@ extra: tvg_name: WDR Event 3 url: https://wdrevent.akamaized.net/hls/live/2016698/wdr_msl4_wdrevent3/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: WDR Event 7 quality: hd tvg_id: WDREvent7.de @@ -1323,7 +1332,7 @@ extra: tvg_name: WDR Event 7 url: https://wdrevent.akamaized.net/hls/live/2020357/wdr_msl4_wdrevent7/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: WDR Event 8 quality: hd tvg_id: WDREvent8.de @@ -1331,7 +1340,7 @@ extra: tvg_name: WDR Event 8 url: https://wdrevent.akamaized.net/hls/live/2020358/wdr_msl4_wdrevent8/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: WDR Event 9 quality: hd tvg_id: WDREvent9.de @@ -1339,7 +1348,7 @@ extra: tvg_name: WDR Event 9 url: https://wdrevent.akamaized.net/hls/live/2020359/wdr_msl4_wdrevent9/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: WDR Event 10 quality: hd tvg_id: WDREvent10.de @@ -1347,7 +1356,7 @@ extra: tvg_name: WDR Event 10 url: https://wdrevent.akamaized.net/hls/live/2020360/wdr_msl4_wdrevent10/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: SWR Event 1 quality: hd tvg_id: SWREvent1.de @@ -1355,7 +1364,7 @@ extra: tvg_name: SWR Event 1 url: https://swrevent01hls.akamaized.net/hls/live/2016766/event01/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: SWR Event 2 quality: hd tvg_id: SWREvent2.de @@ -1363,7 +1372,7 @@ extra: tvg_name: SWR Event 2 url: https://swrevent02hls.akamaized.net/hls/live/2016767/event02/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: SWR Event 3 quality: hd tvg_id: SWREvent3.de @@ -1371,7 +1380,7 @@ extra: tvg_name: SWR Event 3 url: https://swrevent03hls.akamaized.net/hls/live/2016768/event03/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: SWR Event 4 quality: hd tvg_id: SWREvent4.de @@ -1379,7 +1388,7 @@ extra: tvg_name: SWR Event 4 url: https://swrevent04hls.akamaized.net/hls/live/2016769/event04/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Event 1 quality: hd tvg_id: NDREvent1.de @@ -1387,7 +1396,7 @@ extra: tvg_name: NDR Event 1 url: https://ndrevent-lh.akamaihd.net/i/ndrevent_1@409066/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Event 2 quality: hd tvg_id: NDREvent2.de @@ -1395,7 +1404,7 @@ extra: tvg_name: NDR Event 2 url: https://ndrevent-lh.akamaihd.net/i/ndrevent_2@429805/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Event 3 quality: hd tvg_id: NDREvent3.de @@ -1403,7 +1412,7 @@ extra: tvg_name: NDR Event 3 url: https://ndrevent-lh.akamaihd.net/i/ndrevent_3@409068/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Spezial 1 quality: hd tvg_id: NDRSpezial1.de @@ -1411,7 +1420,7 @@ extra: tvg_name: NDR Spezial 1 url: http://ndrspezial-lh.akamaihd.net/i/spezial_1@430235/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Spezial 2 quality: hd tvg_id: NDRSpezial2.de @@ -1419,7 +1428,7 @@ extra: tvg_name: NDR Spezial 2 url: http://ndrspezial-lh.akamaihd.net/i/spezial_2@430236/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Spezial 3 quality: hd tvg_id: NDRSpezial3.de @@ -1427,7 +1436,7 @@ extra: tvg_name: NDR Spezial 3 url: http://ndrspezial-lh.akamaihd.net/i/spezial_3@430237/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Spezial 4 quality: hd tvg_id: NDRSpezial4.de @@ -1435,7 +1444,7 @@ extra: tvg_name: NDR Spezial 4 url: http://ndrspezial-lh.akamaihd.net/i/spezial_4@430238/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Spezial 5 quality: hd tvg_id: NDRSpezial5.de @@ -1443,7 +1452,7 @@ extra: tvg_name: NDR Spezial 5 url: http://ndrspezial-lh.akamaihd.net/i/spezial_5@430239/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Spezial 6 quality: hd tvg_id: NDRSpezial6.de @@ -1451,7 +1460,7 @@ extra: tvg_name: NDR Spezial 6 url: http://ndrspezial-lh.akamaihd.net/i/spezial_6@430240/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Spezial 7 quality: hd tvg_id: NDRSpezial7.de @@ -1459,7 +1468,7 @@ extra: tvg_name: NDR Spezial 7 url: https://ndrspezial7sp-lh.akamaihd.net/i/spezial_7@322396/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Spezial 8 quality: hd tvg_id: NDRSpezial8.de @@ -1467,7 +1476,7 @@ extra: tvg_name: NDR Spezial 8 url: https://ndrspezial8sp-lh.akamaihd.net/i/spezial_8@425044/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Spezial 9 quality: hd tvg_id: NDRSpezial9.de @@ -1475,7 +1484,7 @@ extra: tvg_name: NDR Spezial 9 url: https://ndrspezial9sp-lh.akamaihd.net/i/spezial_9@426506/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: NDR Spezial 10 quality: hd tvg_id: NDRSpezial10.de @@ -1483,7 +1492,7 @@ extra: tvg_name: NDR Spezial 10 url: https://ndrspezial10sp-lh.akamaihd.net/i/spezial_10@9732/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: BR Event 1 quality: hd tvg_id: BREvent1.de @@ -1491,7 +1500,7 @@ extra: tvg_name: BR Event 1 url: https://brevent.akamaized.net/hls/live/2028218/event_01/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: BR Event 2 quality: hd tvg_id: BREvent2.de @@ -1499,7 +1508,7 @@ extra: tvg_name: BR Event 2 url: https://brevent.akamaized.net/hls/live/2028219/event_02/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: BR Event 3 quality: hd tvg_id: BREvent3.de @@ -1507,7 +1516,7 @@ extra: tvg_name: BR Event 3 url: https://brevent.akamaized.net/hls/live/2028220/event_03/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: BR Event 4 quality: hd tvg_id: BREvent4.de @@ -1515,7 +1524,7 @@ extra: tvg_name: BR Event 4 url: https://brevent.akamaized.net/hls/live/2028221/event_04/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: MDR+ 1 quality: hd tvg_id: MDRPlus1.de @@ -1523,7 +1532,7 @@ extra: tvg_name: MDR+ 1 url: https://mdrevent1wwhls.akamaized.net/hls/live/2025205/mdrevent1ww/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: MDR+ 2 quality: hd tvg_id: MDRPlus2.de @@ -1531,7 +1540,7 @@ extra: tvg_name: MDR+ 2 url: https://mdrevent2wwhls.akamaized.net/hls/live/2025367/mdrevent2ww/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: MDR+ 3 quality: hd tvg_id: MDRPlus3.de @@ -1539,7 +1548,7 @@ extra: tvg_name: MDR+ 3 url: https://mdrevent3wwhls.akamaized.net/hls/live/2025368/mdrevent3ww/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: MDR+ 4 quality: hd tvg_id: MDRPlus4.de @@ -1547,7 +1556,7 @@ extra: tvg_name: MDR+ 4 url: https://mdrevent4wwhls.akamaized.net/hls/live/2025369/mdrevent4ww/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: MDR+ 5 quality: hd tvg_id: MDRPlus5.de @@ -1555,7 +1564,7 @@ extra: tvg_name: MDR+ 5 url: https://mdrevent5wwhls.akamaized.net/hls/live/2025370/mdrevent5ww/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: HR Event 1 quality: hd tvg_id: HREvent1.de @@ -1563,7 +1572,7 @@ extra: tvg_name: HR Event 1 url: http://hrevent-lh.akamaihd.net/i/hr_event@309239/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: HR Event 2 quality: hd tvg_id: HREvent2.de @@ -1571,7 +1580,7 @@ extra: tvg_name: HR Event 2 url: http://hrevent2-lh.akamaihd.net/i/hr_event2@309240/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: rbb Event 1 quality: hd tvg_id: RBBEvent1.de @@ -1579,7 +1588,7 @@ extra: tvg_name: rbb Event 1 url: https://rbbevent01-hls.akamaized.net/hls/live/685984/rbbevent01/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra + group_titles_kodi: Extra name: rbb Event 2 quality: hd tvg_id: RBBEvent2.de @@ -1587,42 +1596,54 @@ extra: tvg_name: rbb Event 2 url: https://rbbevent02-hls.akamaized.net/hls/live/685985/rbbevent02/master.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra;Information / Bildung + group_titles_kodi: + - Extra + - Information / Bildung name: Parlamentsfernsehen 1 quality: hd tvg_logo: tv/parlamentsfernsehen.png tvg_name: Parlamentsfernsehen 1 url: https://bttv-live-z.r53.cdn.tv1.eu/13014bundestag-hk1/_definst_/live/video/hk1_de.smil/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra;Information / Bildung + group_titles_kodi: + - Extra + - Information / Bildung name: Parlamentsfernsehen 2 quality: hd tvg_logo: tv/parlamentsfernsehen.png tvg_name: Parlamentsfernsehen 2 url: https://bttv-live-z.r53.cdn.tv1.eu/13014bundestag-hk2/_definst_/live/video/hk2_de.smil/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra;Information / Bildung + group_titles_kodi: + - Extra + - Information / Bildung name: Parlamentsfernsehen 3 quality: hd tvg_logo: tv/parlamentsfernsehen.png tvg_name: Parlamentsfernsehen 3 url: https://bttv-live-z.r53.cdn.tv1.eu/13014bundestag-hk3/_definst_/live/video/hk3_de.smil/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra;Information / Bildung + group_titles_kodi: + - Extra + - Information / Bildung name: Parlamentsfernsehen 4 quality: hd tvg_logo: tv/parlamentsfernsehen.png tvg_name: Parlamentsfernsehen 4 url: https://bttv-live-z.r53.cdn.tv1.eu/13014bundestag-hk4/_definst_/live/video/hk4_de.smil/playlist.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra;Information / Bildung + group_titles_kodi: + - Extra + - Information / Bildung name: EbS Live (Europe by Satellite) quality: hd tvg_logo: tv/ebs.png tvg_name: EbS Live (Europe by Satellite) url: https://euc-live.fl.freecaster.net/live/eucom/ebs-audio_int=96000-video=2600000.m3u8 - group_title: IPTV-DE - group_title_kodi: Extra;Information / Bildung + group_titles_kodi: + - Extra + - Information / Bildung name: EbS+ Live (Europe by Satellite) quality: hd tvg_logo: tv/ebs.png @@ -1630,7 +1651,9 @@ extra: url: https://euc-live.fl.freecaster.net/live/eucom/ebsp-audio_int=96000-video=2600000.m3u8 atch: - group_title: IPTV-AT - group_title_kodi: International;Spartenprogramm + group_titles_kodi: + - International + - Spartenprogramm name: ServusTV HD (AT) quality: hd tvg_id: ServusTV.at @@ -1638,7 +1661,9 @@ atch: tvg_name: ServusTV HD (AT) url: https://stv-live.akamaized.net/hls/live/2031011/lingeoSTVATwebPri/master.m3u8 - group_title: IPTV-AT - group_title_kodi: International;Spartenprogramm + group_titles_kodi: + - International + - Spartenprogramm name: Krone.TV quality: sd tvg_id: KroneTV.at @@ -1646,7 +1671,9 @@ atch: tvg_name: Krone.TV url: https://kronetv.mdn.ors.at/out/u/kronetv-nodrm.m3u8 - group_title: IPTV-AT - group_title_kodi: International;Spartenprogramm + group_titles_kodi: + - International + - Spartenprogramm name: Okto quality: hd tvg_id: OKTO.at @@ -1654,7 +1681,7 @@ atch: tvg_name: Okto url: https://cdn3.wowza.com/1/MHFtazJReW5rOFhP/N2NWNDZ2/hls/live/playlist.m3u8 - group_title: IPTV-AT - group_title_kodi: International + group_titles_kodi: International name: ORF eins HD quality: hd tvg_id: ORF1.at @@ -1662,7 +1689,7 @@ atch: tvg_name: ORF eins HD url: https://orf1.mdn.ors.at/out/u/orf1/q6a/manifest_6.m3u8 - group_title: IPTV-AT - group_title_kodi: International + group_titles_kodi: International name: ORF 2 HD quality: hd tvg_id: ORF2.at @@ -1670,7 +1697,7 @@ atch: tvg_name: ORF 2 HD url: https://orf2.mdn.ors.at/out/u/orf2/qxb/manifest.m3u8 - group_title: IPTV-AT - group_title_kodi: International + group_titles_kodi: International name: ORF III HD quality: hd tvg_id: ORF3.at @@ -1678,7 +1705,9 @@ atch: tvg_name: ORF III HD url: https://orf3.mdn.ors.at/out/u/orf3/q6a/manifest_6.m3u8 - group_title: IPTV-AT - group_title_kodi: International;Sport + group_titles_kodi: + - International + - Sport name: ORF SPORT + quality: hd tvg_id: ORFSport.at @@ -1686,28 +1715,28 @@ atch: tvg_name: ORF SPORT + url: https://orfs.mdn.ors.at/out/u/orfs/q6a/manifest_6.m3u8 - group_title: IPTV-AT - group_title_kodi: International + group_titles_kodi: International name: dorf tv quality: sd tvg_logo: tv/dorftv.png tvg_name: dorf tv url: https://stream.openplayout.org/hls/dorf_high/index.m3u8 - group_title: IPTV-AT - group_title_kodi: International + group_titles_kodi: International name: RE eins TV quality: sd tvg_logo: tv/reeins.png tvg_name: RE eins TV url: http://www.reeins.tv:1935/live/re1/playlist.m3u8 - group_title: IPTV-AT - group_title_kodi: International + group_titles_kodi: International name: Tirol TV quality: sd tvg_logo: tv/tiroltv.png tvg_name: Tirol TV url: https://streaming14.huberwebmedia.at/LiveApp/streams/livestream.m3u8 - group_title: IPTV-AT - group_title_kodi: International + group_titles_kodi: International name: oe24 TV quality: sd tvg_id: OE24TV.at @@ -1715,21 +1744,21 @@ atch: tvg_name: oe24 TV url: https://varoe24live.sf.apa.at/oe24-live1/oe24.smil/playlist.m3u8 - group_title: IPTV-AT - group_title_kodi: International + group_titles_kodi: International name: M4TV quality: sd tvg_logo: tv/m4tv.png tvg_name: M4TV url: https://5a32c05065c79.streamlock.net/live/stream/chunklist_w286280757.m3u8 - group_title: IPTV-AT - group_title_kodi: International + group_titles_kodi: International name: RTV (AT) quality: sd tvg_logo: tv/rtvat.png tvg_name: RTV (AT) url: http://iptv.rtv-ooe.at/stream.m3u8 - group_title: IPTV-AT - group_title_kodi: International + group_titles_kodi: International name: W24 TV quality: sd tvg_id: W24.at @@ -1737,21 +1766,25 @@ atch: tvg_name: W24 TV url: https://ms01.w24.at/W24/smil:liveevent.smil/playlist.m3u8 - group_title: IPTV-AT - group_title_kodi: International;Musik + group_titles_kodi: + - International + - Musik name: Kronehit TV quality: hd tvg_logo: tv/kronehittv.png tvg_name: Kronehit TV url: https://bitcdn-kronehit.bitmovin.com/v2/hls/playlist.m3u8 - group_title: IPTV-AT - group_title_kodi: International;Musik + group_titles_kodi: + - International + - Musik name: Melodie TV quality: hd tvg_logo: tv/melodietv.png tvg_name: Melodie TV url: https://www.youtube.com/embed/1nHkPNp4Yc0 - group_title: IPTV-CH - group_title_kodi: International + group_titles_kodi: International name: TeleZüri HD quality: sd tvg_id: TeleZuri.ch @@ -1759,14 +1792,14 @@ atch: tvg_name: TeleZüri HD url: https://cdnapisec.kaltura.com/p/1719221/sp/171922100/playManifest/entryId/1_se36k3uk/protocol/https/format/applehttp/flavorIds/1_i4zc9zv3,1_2vzxm8zl,1_yjohpwzj/a.m3u8 - group_title: IPTV-CH - group_title_kodi: International + group_titles_kodi: International name: TeleBärn HD quality: sd tvg_logo: tv/telebaern.png tvg_name: TeleBärn HD url: http://klive-a.akamaihd.net/dc-1/live/hls/p/1719221/e/1_0mc3z57p/sd/10000/t/XTGwenpKUhx_fbVnsiu9MQ/index-s32.m3u8 - group_title: IPTV-CH - group_title_kodi: International + group_titles_kodi: International name: Tele M1 HD quality: sd tvg_id: TeleM1.ch @@ -1774,7 +1807,7 @@ atch: tvg_name: Tele M1 HD url: http://klive-a.akamaihd.net/dc-1/live/hls/p/1719221/e/1_ljzy3evp/sd/10000/t/nwOKUovT2mwnA8x_KnC4zg/index-s32.m3u8 - group_title: IPTV-CH - group_title_kodi: International + group_titles_kodi: International name: TVO (CH) quality: sd tvg_id: TVO.ch @@ -1782,7 +1815,7 @@ atch: tvg_name: TVO (CH) url: https://s3.welocal.world/tvo/media/447348/videos/hls.m3u8 - group_title: IPTV-CH - group_title_kodi: International + group_titles_kodi: International name: TeleBielingue quality: sd tvg_id: TeleBielingue.ch @@ -1790,7 +1823,9 @@ atch: tvg_name: TeleBielingue url: https://edge5.vedge.infomaniak.com/livecast/telebielinguech/playlist.m3u8 - group_title: IPTV-CH - group_title_kodi: International;Musik + group_titles_kodi: + - International + - Musik name: TVM3 quality: sd tvg_id: TVM3.ch @@ -1798,7 +1833,7 @@ atch: tvg_name: TVM3 url: https://edge16.vedge.infomaniak.com/livecast/tvm3/manifest.m3u8 - group_title: IPTV-CH - group_title_kodi: International + group_titles_kodi: International name: Telebasel quality: sd tvg_logo: tv/telebasel.png @@ -1806,126 +1841,163 @@ atch: url: http://xapp510394368c1000199.f.l.z.lb.core-cdn.net/10096xtelebase/ios_500/master.m3u8 usuk: - group_title: IPTV-US - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: ABC News quality: hd tvg_logo: tv/abcnews.png tvg_name: ABC News url: https://content.uplynk.com/channel/3324f2467c414329b3b0cc5cd987b6be.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim quality: sd tvg_logo: tv/adultswim.png tvg_name: Adult Swim url: http://adultswimhls-i.akamaihd.net/hls/live/238460/adultswim/main/1/master.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Rick and Morty Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Rick and Morty url: https://adultswim-vodlive.cdn.turner.com/live/rick-and-morty/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Last Stream on the Left Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Last Stream on the Left url: https://adultswim-vodlive.cdn.turner.com/live/lsotl/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Off the Air Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Off the Air url: https://adultswim-vodlive.cdn.turner.com/live/off-the-air/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Metalocalypse Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Metalocalypse url: https://adultswim-vodlive.cdn.turner.com/live/metalocalypse/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Robot Chicken Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Robot Chicken url: https://adultswim-vodlive.cdn.turner.com/live/robot-chicken/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Samurai Jack Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Samurai Jack url: https://adultswim-vodlive.cdn.turner.com/live/samurai-jack/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Aqua Teen Hunger Force Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Aqua Teen Hunger Force url: https://adultswim-vodlive.cdn.turner.com/live/aqua-teen/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (The Eric Andre Show Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - The Eric Andre Show url: https://adultswim-vodlive.cdn.turner.com/live/eric-andre/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (The Venture Brothers Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - The Venture Brothers url: https://adultswim-vodlive.cdn.turner.com/live/venture-bros/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Channel 5 Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Channel 5 url: https://adultswim-vodlive.cdn.turner.com/live/channel-5/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Infomercials Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Infomercials url: https://adultswim-vodlive.cdn.turner.com/live/infomercials/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Black Jesus Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Black Jesus url: https://adultswim-vodlive.cdn.turner.com/live/black-jesus/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Your Pretty Face is Going to Hell Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Your Pretty Face is Going to Hell url: https://adultswim-vodlive.cdn.turner.com/live/ypf/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Comedy + group_titles_kodi: + - International + - Comedy name: Adult Swim (Dream Corp LLC Marathon) quality: hd tvg_logo: tv/adultswim.png tvg_name: Adult Swim - Dream Corp LLC url: https://adultswim-vodlive.cdn.turner.com/live/DREAM-CORP-LLC/stream_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Religion;Kinder / Jugend + group_titles_kodi: + - International + - Religion + - Kinder / Jugend name: JUCE TV quality: sd tvg_logo: tv/jucetv.png tvg_name: JUCE TV url: http://acaooyalahd2-lh.akamaihd.net/i/TBN03_delivery@186241/index_1728_av-p.m3u8 - group_title: IPTV-US - group_title_kodi: International;Information / Bildung + group_titles_kodi: + - International + - Information / Bildung name: NASA TV quality: sd tvg_id: NASA.us @@ -1933,21 +2005,27 @@ usuk: tvg_name: NASA TV url: https://ntv1.akamaized.net/hls/live/2014075/NASA-NTV1-HLS/master.m3u8 - group_title: IPTV-US - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: CBSN quality: hd tvg_logo: tv/cbsn.png tvg_name: CBS News url: https://cbsn-us.cbsnstream.cbsnews.com/out/v1/55a8648e8f134e82a470f83d562deeca/master_7.m3u8 - group_title: IPTV-US - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: CBN News quality: sd tvg_logo: tv/cbnnews.png tvg_name: CBN News url: https://bcliveuniv-lh.akamaihd.net/i/news_1@194050/index_3000_av-p.m3u8 - group_title: IPTV-US - group_title_kodi: International;Wirtschaft + group_titles_kodi: + - International + - Wirtschaft name: Bloomberg TV quality: hd tvg_id: Bloomberg.nws @@ -1955,7 +2033,9 @@ usuk: tvg_name: Bloomberg TV url: https://www.bloomberg.com/media-manifest/streams/eu.m3u8 - group_title: IPTV-US - group_title_kodi: International;Religion + group_titles_kodi: + - International + - Religion name: SBN quality: sd tvg_id: SonLife.uk @@ -1963,7 +2043,9 @@ usuk: tvg_name: SBN url: https://sonlife7-i.akamaihd.net/hls/live/585011/ch7/ch70/ch70.m3u8 - group_title: IPTV-US - group_title_kodi: International;Religion + group_titles_kodi: + - International + - Religion name: GOD TV quality: hd tvg_id: GODChannel.uk @@ -1971,7 +2053,10 @@ usuk: tvg_name: GOD TV url: https://zypelive-lh.akamaihd.net/i/default_1@745545/index_720_av-p.m3u8 - group_title: IPTV-US - group_title_kodi: International;Nachrichten;Information / Bildung + group_titles_kodi: + - International + - Nachrichten + - Information / Bildung name: Voice of America quality: sd tvg_id: VOA.com @@ -1979,35 +2064,45 @@ usuk: tvg_name: Voice of America url: http://voa-lh.akamaihd.net/i/voa_mpls_tvmc6@320298/master.m3u8 - group_title: IPTV-US - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: KTVU Fox 2 quality: hd tvg_logo: tv/ktvufox2.png tvg_name: KTVU Fox 2 url: http://play-prod1.live.anvato.net/server/play/ktvutestctg/master.m3u8 - group_title: IPTV-US - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: WGN-TV quality: hd tvg_logo: tv/wgntv.png tvg_name: WGN-TV url: http://wgntribune-lh.akamaihd.net/i/WGNPrimary_1@304622/index_2500_av-p.m3u8 - group_title: IPTV-US - group_title_kodi: International;Musik + group_titles_kodi: + - International + - Musik name: CMC quality: sd tvg_logo: tv/cmc.png tvg_name: CMC url: https://cmctv.ios.internapcdn.net/cmctv_vitalstream_com/live_1/CMCU-92/playlist.m3u8 - group_title: IPTV-US - group_title_kodi: International;Sonstiges + group_titles_kodi: + - International + - Sonstiges name: Hunt Channel quality: sd tvg_logo: tv/huntchannel.png tvg_name: Hunt Channel url: https://1111296894.rsc.cdn77.org/LS-ATL-56868-1/index.m3u8 - group_title: IPTV-UK - group_title_kodi: International;Teleshopping + group_titles_kodi: + - International + - Teleshopping name: Create & Craft TV quality: hd tvg_id: CreateCraft.uk @@ -2015,7 +2110,9 @@ usuk: tvg_name: Create & Craft TV url: https://live-craftuk.simplestreamcdn.com/craftuk/3/prog_index.m3u8 - group_title: IPTV-UK - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Sky News quality: hd tvg_id: SkyNews.uk @@ -2023,7 +2120,9 @@ usuk: tvg_name: Sky News url: https://www.youtube.com/embed/9Auq9mYxFEE - group_title: IPTV-UK - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: London Live quality: hd tvg_id: LondonLive.uk @@ -2031,7 +2130,7 @@ usuk: tvg_name: London Live url: http://bcoveliveios-i.akamaihd.net/hls/live/217434/3083279840001/master.m3u8 - group_title: IPTV-UK - group_title_kodi: Musik + group_titles_kodi: Musik name: 4Music quality: sd tvg_id: 4Music.uk @@ -2040,7 +2139,9 @@ usuk: url: https://csm-e-boxplus.tls1.yospace.com/csm/extlive/boxplus01,boxhits-alldev.m3u8?yo.up=http://boxtv-origin-elb.cds1.yospace.com/uploads/boxhits/ international: - group_title: IPTV-AU - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Sky News Extra quality: hd tvg_id: SkyNewsExtra.au @@ -2048,7 +2149,9 @@ international: tvg_name: Sky News Extra url: https://skynewsau-live.akamaized.net/hls/live/2002690/skynewsau-extra2/master.m3u8 - group_title: IPTV-ES - group_title_kodi: International;Musik + group_titles_kodi: + - International + - Musik name: Activa TV quality: hd tvg_id: ActivaTV.es @@ -2056,7 +2159,9 @@ international: tvg_name: Activa TV url: https://streamtv.mediasector.es/hls/activatv/index.m3u8 - group_title: IPTV-ES - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Deutsche Welle (ES) quality: hd tvg_id: DeutscheWelleES.de @@ -2064,7 +2169,9 @@ international: tvg_name: Deutsche Welle (ES) url: https://dwamdstream109.akamaized.net/hls/live/2017970/dwstream109/index.m3u8 - group_title: IPTV-IR - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Press TV quality: hd tvg_id: PressTV.uk @@ -2072,7 +2179,9 @@ international: tvg_name: Press TV url: https://live2.presstv.com/liveprs/smil:liveprs.smil/playlist.m3u8 - group_title: IPTV-CA - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: CHCH quality: hd tvg_id: CHCH.cdn @@ -2080,28 +2189,32 @@ international: tvg_name: CHCH url: https://bcovlive-a.akamaihd.net/45a29af6ec4341539ddd3dd505c4b669/us-west-2/5644964886001/playlist.m3u8 - group_title: IPTV-NZ - group_title_kodi: International + group_titles_kodi: International name: TVNZ 1 quality: sd tvg_logo: tv/tvnz1.png tvg_name: TVNZ 1 url: https://tvnzioslive04-i.akamaihd.net/hls/live/267188/1924997895001/channel1/masterR_5.m3u8 - group_title: IPTV-NZ - group_title_kodi: International + group_titles_kodi: International name: TVNZ 2 quality: sd tvg_logo: tv/tvnz2.png tvg_name: TVNZ 2 url: https://tvnzioslive05-i.akamaihd.net/hls/live/267189/1924997895001/channel2/masterR_55.m3u8 - group_title: IPTV-NZ - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Three quality: hd tvg_logo: tv/three.png tvg_name: Three url: http://mediaworks-i.akamaihd.net/hls/live/220435/3812193411001/3news_live/master.m3u8 - group_title: IPTV-FR - group_title_kodi: International;Vollprogramm + group_titles_kodi: + - International + - Vollprogramm name: ARTE HD (FR) quality: hd tvg_id: ARTE.fr @@ -2109,7 +2222,9 @@ international: tvg_name: ARTE HD (FR) url: https://artesimulcast.akamaized.net/hls/live/2031003/artelive_fr/master.m3u8 - group_title: IPTV-FR - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: France 24 quality: hd tvg_id: France24.fr @@ -2117,7 +2232,9 @@ international: tvg_name: France 24 url: http://static.france24.com/live/F24_FR_HI_HLS/live_tv.m3u8 - group_title: IPTV-FR - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: BFMTV quality: hd tvg_id: BFMTV.fr @@ -2125,14 +2242,18 @@ international: tvg_name: BFMTV url: https://bfmtvalive1-a.akamaihd.net/8a3483ffeb9d40f0a738c1392f2bcc14/eu-central-1/876450610001/profile_0/da8e1b0dc391423390d09277e66af0b9/chunklist_ssaiM.m3u8 - group_title: IPTV-NL - group_title_kodi: International;Musik + group_titles_kodi: + - International + - Musik name: XITE quality: hd tvg_logo: tv/xite.png tvg_name: XITE url: https://ms2.mx-cd.net/tv/226-1855782/XITE_NL.smil/chunklist.m3u8 - group_title: IPTV-NL - group_title_kodi: International;Musik + group_titles_kodi: + - International + - Musik name: TV 538 quality: hd tvg_id: TV538.nl @@ -2140,21 +2261,25 @@ international: tvg_name: TV 538 url: https://radio538.prd1.talpatvcdn.nl/22e9bbf9616547d7bc162c993009c533/index.m3u8 - group_title: IPTV-IT - group_title_kodi: International + group_titles_kodi: International name: SDF quality: sd tvg_logo: tv/sdf.png tvg_name: SDF url: https://livestream.goinfo.it/SDFLive/sdfros/playlist.m3u8 - group_title: IPTV-IT - group_title_kodi: International;Musik + group_titles_kodi: + - International + - Musik name: m2o Tv quality: hd tvg_logo: tv/m2otv.png tvg_name: m2o TV url: https://4c4b867c89244861ac216426883d1ad0.msvdn.net/live/S62628868/uhdWBlkC1AoO/playlist.m3u8 - group_title: IPTV-IT - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Rai News 24 quality: hd tvg_id: RaiNews.it @@ -2162,14 +2287,16 @@ international: tvg_name: Rai News 24 url: https://rainews1-live.akamaized.net/hls/live/598326/rainews1/rainews1/playlist.m3u8 - group_title: IPTV-SW - group_title_kodi: International + group_titles_kodi: International name: Fjorton quality: sd tvg_logo: tv/fjorton.png tvg_name: Fjorton url: http://155.4.160.181:1935/fjwebb/live/playlist.m3u8 - group_title: IPTV-RO - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Digi 24 HD quality: hd tvg_id: digi24.ro @@ -2177,7 +2304,9 @@ international: tvg_name: Digi 24 HD url: http://82.76.40.76/digi24edge/smil:digi24.smil/chunklist_w41349427_b2830400_sleng.m3u8 - group_title: IPTV-RO - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: ProTv News quality: hd tvg_id: ProTVInternational.ro @@ -2185,7 +2314,9 @@ international: tvg_name: ProTv News url: http://185.133.64.237/news/stream:1.stream/playlist.m3u8 - group_title: IPTV-RO - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Realitatea TV quality: hd tvg_id: RealitateaTV.ro @@ -2193,7 +2324,9 @@ international: tvg_name: Realitatea TV url: http://livestream.realitatea.net/livestream/liverealitatea.stream/chunklist.m3u8 - group_title: IPTV-RO - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Romania TV quality: hd tvg_id: RomaniaTV.ro @@ -2201,21 +2334,21 @@ international: tvg_name: Romania TV url: http://ppext.arktv.ro/hls/channel6/bitrate4.m3u8 - group_title: IPTV-MK - group_title_kodi: International + group_titles_kodi: International name: Sitel quality: sd tvg_logo: tv/sitel.png tvg_name: Sitel url: http://51.255.92.232:1935/sitel/sitel.stream/playlist.m3u8 - group_title: IPTV-MK - group_title_kodi: International + group_titles_kodi: International name: Kanal 5 quality: sd tvg_logo: tv/kanal5.png tvg_name: Kanal 5 url: http://37.187.158.217:8081/kanal5/kanal5/playlist.m3u8 - group_title: IPTV-MK - group_title_kodi: International + group_titles_kodi: International name: Alfa quality: sd tvg_id: Alfa.hr @@ -2223,21 +2356,25 @@ international: tvg_name: Alfa url: http://37.187.158.217:8081/alfa/tvalfa2/playlist.m3u8 - group_title: IPTV-MK - group_title_kodi: International + group_titles_kodi: International name: Telma quality: sd tvg_logo: tv/telma.png tvg_name: Telma url: http://37.187.158.217:8081/telma/telma_360pp/playlist.m3u8 - group_title: IPTV-MK - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: 24 Vesti quality: sd tvg_logo: tv/24vesti.png tvg_name: 24 Vesti url: http://37.187.158.217:8081/24vesti/24vesti/playlist.m3u8 - group_title: IPTV-TR - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: TRT World HD quality: hd tvg_id: TRTworld.nws @@ -2245,7 +2382,9 @@ international: tvg_name: TRT World HD url: https://tv-trtworld.live.trt.com.tr/master_1080.m3u8 - group_title: IPTV-RU - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: TV Rain (Doschd) quality: hd tvg_id: tvrain.ru @@ -2253,21 +2392,28 @@ international: tvg_name: TV Rain url: https://www.youtube.com/embed/a-FtIbrC0pE - group_title: IPTV-ID - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: MetroTV quality: sd tvg_logo: tv/metrotv.png tvg_name: MetroTV url: http://edge.metrotvnews.com:1935/live-edge/smil:metro.smil/master.m3u8 - group_title: IPTV-JP - group_title_kodi: International;Nachrichten;Dokumentationen + group_titles_kodi: + - International + - Nachrichten + - Dokumentationen name: NHK WORLD TV quality: hd tvg_logo: tv/nhkworldtv.png tvg_name: NHK WORLD TV url: https://nhkwlive-ojp.akamaized.net/hls/live/2003459/nhkwlive-ojp-en/index_4M.m3u8 - group_title: IPTV-QA - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Al Jazeera quality: sd tvg_id: AlJazeeraArabe.nws @@ -2275,7 +2421,9 @@ international: tvg_name: Al Jazeera url: http://aljazeera-doc-apple-live.adaptive.level3.net/apple/aljazeera/hq-doc/800kStream.m3u8 - group_title: IPTV-QA - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Al Jazeera English quality: sd tvg_id: AlJazeera.nws @@ -2283,7 +2431,9 @@ international: tvg_name: Al Jazeera English url: https://live-hls-web-aje.getaj.net/AJE/01.m3u8 - group_title: IPTV-AE - group_title_kodi: International;Filme / Serien + group_titles_kodi: + - International + - Filme / Serien name: Dubai One quality: hd tvg_id: DubaiOne.net @@ -2291,21 +2441,23 @@ international: tvg_name: Dubai One url: http://dminnvll.cdn.mangomolo.com/dubaione/smil:dubaione.stream.smil/chunklist_b1500000.m3u8 - group_title: IPTV-FO - group_title_kodi: International + group_titles_kodi: International name: KVF quality: sd tvg_logo: tv/kvf.png tvg_name: KVF url: https://w1.kringvarp.fo/uttanlands/_definst_/smil:uttanlands.smil/chunklist_w121411721_b5000000_slfao.m3u8 - group_title: IPTV-AL - group_title_kodi: International + group_titles_kodi: International name: ALBUK TV quality: hd tvg_logo: tv/albuktv.png tvg_name: ALBUK TV url: http://albuk.dyndns.tv:1935/albuk/albuk.stream/playlist.m3u8 - group_title: IPTV-IE - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: RTÉ News Now quality: hd tvg_id: RTENewsNow.ie @@ -2313,28 +2465,34 @@ international: tvg_name: RTÉ News Now url: http://wmsrtsp1.rte.ie/live/android.sdp/playlist.m3u8 - group_title: IPTV-JM - group_title_kodi: International;Filme / Serien + group_titles_kodi: + - International + - Filme / Serien name: Mello TV quality: hd tvg_logo: tv/mellotv.png tvg_name: Mello TV url: https://wowzaprod133-i.akamaihd.net/hls/live/577385/a1e0ad3f/playlist.m3u8 - group_title: IPTV-SG - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: Channel NewsAsia quality: hd tvg_logo: tv/channelnewsasia.png tvg_name: Channel NewsAsia url: https://d2e1asnsl7br7b.cloudfront.net/7782e205e72f43aeb4a48ec97f66ebbe/index_5.m3u8 - group_title: IPTV-KP - group_title_kodi: International;Nachrichten + group_titles_kodi: + - International + - Nachrichten name: NKNews quality: sd tvg_logo: tv/nknews.png tvg_name: NKNews url: https://tv.nknews.org/tvdash/stream.mpd - group_title: IPTV-KR - group_title_kodi: International + group_titles_kodi: International name: Arirang TV quality: hd tvg_id: "ArirangTv.kr" @@ -2342,7 +2500,7 @@ international: tvg_name: Arirang TV url: https://amdlive-ch01-ctnd-com.akamaized.net/arirang_1ch/smil:arirang_1ch.smil/chunklist_b2256000_sleng.m3u8 - group_title: IPTV-FI - group_title_kodi: International + group_titles_kodi: International name: Yle TV1 quality: hd tvg_id: yle1.fi @@ -2350,7 +2508,7 @@ international: tvg_name: Yle TV1 url: https://yletvworld.akamaized.net/hls/live/622540/yletv1w/index.m3u8 - group_title: IPTV-FI - group_title_kodi: International + group_titles_kodi: International name: Yle TV2 quality: hd tvg_id: yle2.fi @@ -2358,7 +2516,7 @@ international: tvg_name: Yle TV2 url: https://yletvworld.akamaized.net/hls/live/622541/yletv2w/index.m3u8 - group_title: IPTV-FI - group_title_kodi: International + group_titles_kodi: International name: Yle Teema & Fem quality: hd tvg_id: yleteemafem.fi @@ -2366,7 +2524,7 @@ international: tvg_name: Yle Teema & Fem url: https://yletvworld.akamaized.net/hls/live/622547/yletvteemafemw/index.m3u8 - group_title: IPTV-FI - group_title_kodi: International + group_titles_kodi: International name: Taivas TV7 quality: hd tvg_id: taivastv7.fi @@ -2374,7 +2532,7 @@ international: tvg_name: Taivas TV7 url: https://vod.tv7.fi/tv7-fi/_definst_/smil:tv7-fi.smil/playlist.m3u8 - group_title: IPTV-FI - group_title_kodi: International + group_titles_kodi: International name: Alfa TV quality: sd tvg_id: alfatv.fi @@ -2382,7 +2540,9 @@ international: tvg_name: Alfa TV url: https://alfatv.digitacdn.net/live/_definst_/alfatv/amlst:alfatv.amlst/playlist.m3u8 - group_title: IPTV-PL - group_title_kodi: International;Musik + group_titles_kodi: + - International + - Musik name: 4 FunTV quality: hd tvg_id: 4fun.tv @@ -2390,7 +2550,7 @@ international: tvg_name: 4 FunTV url: https://stream.4fun.tv:8888/hls/4f_high/index.m3u8 - group_title: IPTV-PL - group_title_kodi: International + group_titles_kodi: International name: SferaTV quality: sd tvg_id: sferatv.pl diff --git a/tests/line_writer_test.py b/tests/line_writer_test.py index 604a6ad1..bb93b5cd 100644 --- a/tests/line_writer_test.py +++ b/tests/line_writer_test.py @@ -23,8 +23,8 @@ def m3u8_streams() -> list[Stream]: quality="hd", radio=False, tvg_id="daserste.de", - group_title="IPTV-DE", - group_title_kodi="Vollprogramm", + group_titles="IPTV-DE", + group_titles_kodi=["Vollprogramm"], tvg_logo="tv/daserste.png", url="https://daserste.m3u8", ), @@ -34,14 +34,14 @@ def m3u8_streams() -> list[Stream]: quality="sd", radio=False, tvg_id="zdf.de", - group_title="IPTV-DE", - group_title_kodi="Vollprogramm", + group_titles="IPTV-DE", + group_titles_kodi=["Vollprogramm"], tvg_logo="tv/zdf.png", url="https://zdf.m3u8", ), Stream( - group_title="Radio-DE", - group_title_kodi="Deutschland", + group_titles="Radio-DE", + group_titles_kodi=["Deutschland"], name="Deutschlandfunk", quality="", radio=True, @@ -63,8 +63,8 @@ def dash_streams() -> list[Stream]: quality="hd", radio=False, tvg_id="daserste.de", - group_title="IPTV-DE", - group_title_kodi="Vollprogramm", + group_titles="IPTV-DE", + group_titles_kodi=["Vollprogramm"], tvg_logo="tv/daserste.png", url="https://daserste.mpd", ), @@ -74,14 +74,14 @@ def dash_streams() -> list[Stream]: quality="sd", radio=False, tvg_id="zdf.de", - group_title="IPTV-DE", - group_title_kodi="Vollprogramm", + group_titles="IPTV-DE", + group_titles_kodi=["Vollprogramm"], tvg_logo="tv/zdf.png", url="https://zdf.mpd", ), Stream( - group_title="Radio-DE", - group_title_kodi="Deutschland", + group_titles="Radio-DE", + group_titles_kodi=["Deutschland"], name="Deutschlandfunk", quality="", radio=True, @@ -102,11 +102,11 @@ def test_get_default_lines(line_writer: LineWriter, m3u8_streams: list[Stream]) "https://daserste.m3u8", ], [ - '#EXTINF:-1 tvg-name="ZDF" tvg-id="zdf.de" group-title="IPTV-DE" tvg-logo="https://example.com/logos/tv/zdf.png",ZDF', # noqa: E501 + '#EXTINF:-1 tvg-name="ZDF" tvg-id="zdf.de" group-title="IPTV-DE" tvg-logo="https://example.com/logos/tv/zdf.png",ZDF', "https://zdf.m3u8", ], [ - '#EXTINF:-1 tvg-name="Deutschlandfunk" group-title="Radio-DE" radio="true" tvg-logo="https://example.com/logos/radio/deutschlandfunk.png",Deutschlandfunk', # noqa: E501 + '#EXTINF:-1 tvg-name="Deutschlandfunk" group-title="Radio-DE" radio="true" tvg-logo="https://example.com/logos/radio/deutschlandfunk.png",Deutschlandfunk', "https://deutschlandfunk.aac", ], ] @@ -125,7 +125,7 @@ def test_get_kodi_lines(line_writer: LineWriter, m3u8_streams: list[Stream]) -> "https://daserste.m3u8", ], [ - '#EXTINF:-1 tvg-name="ZDF" tvg-id="zdf.de" group-title="Vollprogramm" tvg-logo="https://example.com/logos/tv/zdf.png",ZDF', # noqa: E501 + '#EXTINF:-1 tvg-name="ZDF" tvg-id="zdf.de" group-title="Vollprogramm" tvg-logo="https://example.com/logos/tv/zdf.png",ZDF', "https://zdf.m3u8", ], [ @@ -148,11 +148,11 @@ def test_get_pipe_lines(line_writer: LineWriter, m3u8_streams: list[Stream]) -> "pipe://ffmpeg -loglevel fatal -i https://daserste.m3u8 -vcodec copy -acodec copy -metadata service_name=Das\\ Erste\\ HD -metadata service_provider=IPTV-DE -mpegts_service_type advanced_codec_digital_hdtv -f mpegts pipe:1", # noqa: E501 ], [ - '#EXTINF:-1 tvg-name="ZDF" tvg-id="zdf.de" group-title="IPTV-DE" tvg-logo="https://example.com/logos/tv/zdf.png",ZDF', # noqa: E501 + '#EXTINF:-1 tvg-name="ZDF" tvg-id="zdf.de" group-title="IPTV-DE" tvg-logo="https://example.com/logos/tv/zdf.png",ZDF', "pipe://ffmpeg -loglevel fatal -i https://zdf.m3u8 -vcodec copy -acodec copy -metadata service_name=ZDF -metadata service_provider=IPTV-DE -mpegts_service_type advanced_codec_digital_sdtv -f mpegts pipe:1", # noqa: E501 ], [ - '#EXTINF:-1 tvg-name="Deutschlandfunk" group-title="Radio-DE" radio="true" tvg-logo="https://example.com/logos/radio/deutschlandfunk.png",Deutschlandfunk', # noqa: E501 + '#EXTINF:-1 tvg-name="Deutschlandfunk" group-title="Radio-DE" radio="true" tvg-logo="https://example.com/logos/radio/deutschlandfunk.png",Deutschlandfunk', "pipe://ffmpeg -loglevel fatal -i https://deutschlandfunk.aac -vcodec copy -acodec copy -metadata service_name=Deutschlandfunk -metadata service_provider=Radio-DE -mpegts_service_type advanced_codec_digital_radio -f mpegts pipe:1", # noqa: E501 ], ] @@ -173,7 +173,7 @@ def test_get_dash_lines(line_writer: LineWriter, dash_streams: list[Stream]) -> "https://daserste.mpd", ], [ - '#EXTINF:-1 tvg-name="ZDF" tvg-id="zdf.de" group-title="Vollprogramm" tvg-logo="https://example.com/logos/tv/zdf.png",ZDF', # noqa: E501 + '#EXTINF:-1 tvg-name="ZDF" tvg-id="zdf.de" group-title="Vollprogramm" tvg-logo="https://example.com/logos/tv/zdf.png",ZDF', "#KODIPROP:inputstreamaddon=inputstream.adaptive", "#KODIPROP:inputstream.adaptive.manifest_type=mpd", "https://zdf.mpd",