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 []