From 2f659d8c60a2d5a73fd4d867d066bfeabcb4d29f Mon Sep 17 00:00:00 2001 From: Eric van Blokland Date: Wed, 1 Sep 2021 21:04:40 +0200 Subject: [PATCH] Added a PlaybackProvider to mark tracks as live stream --- mopidy_radionet/backend.py | 18 ++++++++++++++++++ mopidy_radionet/library.py | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/mopidy_radionet/backend.py b/mopidy_radionet/backend.py index da365de..395fccd 100644 --- a/mopidy_radionet/backend.py +++ b/mopidy_radionet/backend.py @@ -5,6 +5,7 @@ import time from mopidy import backend import pykka +import re import mopidy_radionet @@ -24,6 +25,9 @@ class RadioNetBackend(pykka.ThreadingActor, backend.Backend): mopidy_radionet.__version__)) self.library = RadioNetLibraryProvider(backend=self) + self.playback = RadioNetPlaybackProvider( + audio=audio, backend=self + ) self.uri_schemes = ['radionet'] @@ -46,3 +50,17 @@ class RadioNetBackend(pykka.ThreadingActor, backend.Backend): self.radionet.get_local_stations() self.radionet.get_favorites() self.set_update_timeout() + +class RadioNetPlaybackProvider(backend.PlaybackProvider): + + def is_live(self, uri): + return True + + def translate_uri(self, uri): + identifier = re.findall(r'^radionet:track:?([a-z0-9]+|\d+)?$', uri) + if identifier: + radio_data = self.backend.radionet.get_station_by_id(identifier) + if radio_data: + return radio_data.stream_url + + return None \ No newline at end of file diff --git a/mopidy_radionet/library.py b/mopidy_radionet/library.py index 29f47cd..a2ed9e8 100644 --- a/mopidy_radionet/library.py +++ b/mopidy_radionet/library.py @@ -22,7 +22,7 @@ class RadioNetLibraryProvider(backend.LibraryProvider): variant, identifier = self.parse_uri(uri) - if variant == 'station': + if variant == 'station' or variant == 'track': identifier = int(identifier) radio_data = self.backend.radionet.get_station_by_id(identifier) @@ -40,7 +40,7 @@ class RadioNetLibraryProvider(backend.LibraryProvider): name=radio_data.name, genre=radio_data.genres, comment=radio_data.description, - uri=radio_data.stream_url) + uri='radionet:track:%s' % (identifier)) return [track] return []