Changed mark_consumed to a flexible mark() function that currently allows to mark songs as consumed (that have been played full time), played (that have been played for some time) and unplayable

This commit is contained in:
Javier Domingo Cansino 2013-08-08 12:12:37 +02:00
parent 2c83225a1e
commit ab85dd9d62
2 changed files with 16 additions and 11 deletions

View File

@ -148,7 +148,7 @@ class PlaybackController(object):
else:
self.stop(clear_current_track=True)
self.core.tracklist.mark_consumed(tlid=original_tl_track.tlid)
self.core.tracklist.mark("consumed", original_tl_track)
def on_tracklist_change(self):
"""
@ -213,16 +213,14 @@ class PlaybackController(object):
backend = self._get_backend()
if not backend or not backend.playback.play(tl_track.track).get():
logger.warning('Track is not playable: %s', tl_track.track.uri)
if self.core.tracklist.random and self.core.tracklist._shuffled:
self.core.tracklist._shuffled.remove(tl_track)
self.core.tracklist.mark("unplayable", tl_track)
if on_error_step == 1:
self.next()
elif on_error_step == -1:
self.previous()
return
if self.core.tracklist.random and self.current_tl_track in self.core.tracklist._shuffled:
self.core.tracklist._shuffled.remove(self.current_tl_track)
self.core.tracklist.mark("played", tl_track)
self._trigger_track_playback_started()

View File

@ -434,18 +434,25 @@ class TracklistController(object):
"""
return self._tl_tracks[start:end]
def mark_consumed(self, **kwargs):
def mark(self, what, tl_track):
"""
Marks the given track as played.
Marks the given track as specified.
:param tl_track: Track to mark
:type tl_track: :class:`mopidy.models.TlTrack`
:rtype: True if the track was actually removed from the tracklist
"""
if what == "consumed":
if not self.consume:
return False
self.remove(**kwargs)
self.remove(tlid=tl_track.tlid)
return True
elif what == "played":
if self.random and tl_track in self._shuffled:
self._shuffled.remove(tl_track)
elif what == "unplayable":
if self.random and self._shuffled:
self._shuffled.remove(tl_track)
def _trigger_tracklist_changed(self):
self._first_shuffle = True