* not blacklisted
"""
artist = tracks[0].artist
- black_list = self.player.queue + self.to_add
+ if self.player.playmode.get('random'):
+ black_list = self.player.playlist + self.to_add
+ else:
+ black_list = self.player.queue + self.to_add
not_in_hist = list(set(tracks) - set(self.get_history(artist=artist)))
if self.plugin_conf.get('queue_mode') != 'top' and not not_in_hist:
- self.log.debug('All tracks already played for "{}"'.format(artist))
+ self.log.debug('All tracks already played for "%s"', artist)
random.shuffle(not_in_hist)
candidate = []
for trk in [_ for _ in not_in_hist if _ not in black_list]:
# Should use albumartist heuristic as well
if self.plugin_conf.getboolean('single_album'): # pylint: disable=no-member
if (trk.album == self.player.current.album or
- trk.album in [tr.album for tr in self.to_add]):
+ trk.album in [tr.album for tr in black_list]):
self.log.debug('Found unplayed track ' +
'but from an album already queued: %s', trk)
continue
if not self.player.playlist:
return
history = list(self.history)
- history = self.player.queue + history
+ if self.player.playmode.get('random'):
+ history = self.player.playlist + history
+ else:
+ history = self.player.queue + history
history = deque(history)
last_trk = history.popleft() # remove
extra_arts = list()
if not ret:
self.log.warning('Got nothing from music library.')
return []
- queued_artists = MetaContainer([trk.Artist for trk in self.player.queue])
+ if self.player.playmode.get('random'):
+ queued_artists = MetaContainer([trk.Artist for trk in self.player.playlist])
+ else:
+ queued_artists = MetaContainer([trk.Artist for trk in self.player.queue])
self.log.trace('Already queued: {}'.format(queued_artists))
self.log.trace('Candidate: {}'.format(ret))
if ret & queued_artists:
albums_not_in_hist = list(albums - albums_yet_in_hist)
# Get to next artist if there are no unplayed albums
if not albums_not_in_hist:
- self.log.info('No album found for "%s"' % artist)
+ self.log.info('No unplayed album found for "%s"' % artist)
continue
album_to_queue = str()
random.shuffle(albums_not_in_hist)
if tracks[0] in self.player.queue:
self.log.debug('"%s" already queued, skipping!', tracks[0].album)
continue
+ if tracks[0] in self.player.playlist:
+ if self.player.playmode.get('random'):
+ self.log.debug('"%s" already in playlist, skipping!', tracks[0].album)
+ continue
album_to_queue = album
if not album_to_queue:
self.log.info('No album found for "%s"', artist)