diff --git a/mopidy/backends/__init__.py b/mopidy/backends/__init__.py index 2edc5f9c..eca6ecba 100644 --- a/mopidy/backends/__init__.py +++ b/mopidy/backends/__init__.py @@ -302,6 +302,8 @@ class BasePlaybackController(object): def __init__(self, backend): self.backend = backend self._state = self.STOPPED + self._shuffled = [] + self._first_shuffle = True @property def next_track(self): @@ -318,6 +320,15 @@ class BasePlaybackController(object): if not tracks: return None + if self.random and not self._shuffled: + if self.repeat or self._first_shuffle: + self._shuffled = tracks + random.shuffle(self._shuffled) + self._first_shuffle = False + + if self._shuffled: + return self._shuffled[0] + if self.current_track is None: return tracks[0]