# -*- coding: utf-8 -*-
-# Copyright (c) 2009-2015 Jack Kaliko <kaliko@azylum.org>
+# Copyright (c) 2009-2019 Jack Kaliko <kaliko@azylum.org>
+# Copyright (c) 2019 sacha <sachahony@gmail.com>
#
# This file is part of sima
#
* not blacklisted
"""
artist = tracks[0].artist
+ # In random play mode use complete playlist to filter
if self.player.playmode.get('random'):
black_list = self.player.playlist + self.to_add
else:
if not self.player.playlist:
return
history = list(self.history)
+ # In random play mode use complete playlist to filter
if self.player.playmode.get('random'):
history = self.player.playlist + history
else:
if not ret:
self.log.warning('Got nothing from music library.')
return []
+ # In random play mode use complete playlist to filter
if self.player.playmode.get('random'):
queued_artists = MetaContainer([trk.Artist for trk in self.player.playlist])
else:
album_to_queue = str()
random.shuffle(albums_not_in_hist)
for album in albums_not_in_hist:
- tracks = self.player.find_album(artist, album)
- # Look if one track of the album is already queued
- # Good heuristic, at least enough to guess if the whole album is
- # already queued.
- if tracks[0] in self.player.queue:
- self.log.debug('"%s" already queued, skipping!', tracks[0].album)
+ # Controls the album found is not already queued
+ if album in {t.album for t in self.player.queue}:
+ self.log.debug('"%s" already queued, skipping!', 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)
+ # In random play mode use complete playlist to filter
+ if self.player.playmode.get('random'):
+ if album in {t.album for t in self.player.playlist}:
+ self.log.debug('"%s" already in playlist, skipping!', album)
continue
album_to_queue = album
if not album_to_queue:
continue
self.log.info('%s album candidate: %s - %s', self.ws.name, artist, album_to_queue)
nb_album_add += 1
- self.to_add.extend(self.player.find_album(artist, album_to_queue))
+ candidates = self.player.find_album(artist, album_to_queue)
+ if self.plugin_conf.getboolean('shuffle_album'):
+ random.shuffle(candidates)
+ # this allows to select a maximum number of track from the album
+ # a value of 0 (default) means keep all
+ nbtracks = self.plugin_conf.getint('track_to_add_from_album')
+ if nbtracks > 0:
+ candidates = candidates[0:nbtracks]
+ self.to_add.extend(candidates)
if nb_album_add == target_album_to_add:
return True