mirror of
https://github.com/beetbox/beets.git
synced 2025-12-06 16:42:42 +01:00
added a bunch of '-id' commands
--HG-- extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%40104
This commit is contained in:
parent
cf4773d64f
commit
e7066be896
1 changed files with 27 additions and 29 deletions
|
|
@ -133,16 +133,6 @@ class Server(object):
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass # ^C ends the server.
|
pass # ^C ends the server.
|
||||||
|
|
||||||
def _int_cmd(self, attr, name, value, minval=None, maxval=None):
|
|
||||||
"""Helper function for commands that set an integer value."""
|
|
||||||
value = cast_arg(int, value)
|
|
||||||
if (minval is not None and value < minval) or \
|
|
||||||
(maxval is not None and value > maxval):
|
|
||||||
raise ArgumentIndexError()
|
|
||||||
else:
|
|
||||||
setattr(self, attr, value)
|
|
||||||
return SuccessResponse()
|
|
||||||
|
|
||||||
def _generic_status(self):
|
def _generic_status(self):
|
||||||
"""Returns some status information for use with an
|
"""Returns some status information for use with an
|
||||||
implementation of cmd_status.
|
implementation of cmd_status.
|
||||||
|
|
@ -169,6 +159,17 @@ class Server(object):
|
||||||
"""
|
"""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def _id_to_index(self, track_id):
|
||||||
|
"""Searches the playlist for a song with the given id and
|
||||||
|
returns its index in the playlist.
|
||||||
|
"""
|
||||||
|
track_id = cast_arg(int, track_id)
|
||||||
|
for index, track in self.playlist:
|
||||||
|
if _item_id(track) == track_id:
|
||||||
|
return index
|
||||||
|
# Loop finished with no track found.
|
||||||
|
raise ArgumentNotFoundError()
|
||||||
|
|
||||||
def cmd_ping(self):
|
def cmd_ping(self):
|
||||||
"""Succeeds."""
|
"""Succeeds."""
|
||||||
pass
|
pass
|
||||||
|
|
@ -232,18 +233,24 @@ class Server(object):
|
||||||
except IndexError:
|
except IndexError:
|
||||||
raise ArgumentIndexError()
|
raise ArgumentIndexError()
|
||||||
self.playlist_version += 1
|
self.playlist_version += 1
|
||||||
|
def cmd_deleteid(self, track_id):
|
||||||
|
self.cmd_delete(self._id_to_index(track_id))
|
||||||
|
|
||||||
def cmd_move(self, i_from, i_to):
|
def cmd_move(self, idx_from, idx_to):
|
||||||
"""Move a track in the playlist."""
|
"""Move a track in the playlist."""
|
||||||
i_from = cast_arg(int, i_from)
|
idx_from = cast_arg(int, idx_from)
|
||||||
i_to = cast_arg(int, i_to)
|
idx_to = cast_arg(int, idx_to)
|
||||||
try:
|
try:
|
||||||
track = self.playlist.pop(i_from)
|
track = self.playlist.pop(idx_from)
|
||||||
self.playlist.insert(i_to, track)
|
self.playlist.insert(idx_to, track)
|
||||||
except IndexError:
|
except IndexError:
|
||||||
raise ArgumentIndexError()
|
raise ArgumentIndexError()
|
||||||
|
def cmd_moveid(self, id_from, idx_to):
|
||||||
|
idx_from = self._id_to_index(idx_from)
|
||||||
|
return self.cmd_move(idx_from, idx_to)
|
||||||
|
|
||||||
def cmd_swap(self, i, j):
|
def cmd_swap(self, i, j):
|
||||||
|
"""Swaps two tracks in the playlist."""
|
||||||
i = cast_arg(int, i)
|
i = cast_arg(int, i)
|
||||||
j = cast_arg(int, j)
|
j = cast_arg(int, j)
|
||||||
try:
|
try:
|
||||||
|
|
@ -253,12 +260,15 @@ class Server(object):
|
||||||
raise ArgumentIndexError()
|
raise ArgumentIndexError()
|
||||||
self.playlist[j] = track_i
|
self.playlist[j] = track_i
|
||||||
self.playlist[i] = track_j
|
self.playlist[i] = track_j
|
||||||
|
def cmd_swapid(self, i_id, j_id):
|
||||||
|
i = self._id_to_index(i_id)
|
||||||
|
j = self._id_to_index(j_id)
|
||||||
|
return self.cmd_swap(i, j)
|
||||||
|
|
||||||
def cmd_urlhandlers(self):
|
def cmd_urlhandlers(self):
|
||||||
"""Indicates supported URL schemes. None by default."""
|
"""Indicates supported URL schemes. None by default."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def _items_info(self, l):
|
def _items_info(self, l):
|
||||||
"""Gets info (using _item_info) for an entire list (e.g.,
|
"""Gets info (using _item_info) for an entire list (e.g.,
|
||||||
the playlist).
|
the playlist).
|
||||||
|
|
@ -281,20 +291,8 @@ class Server(object):
|
||||||
except IndexError:
|
except IndexError:
|
||||||
raise ArgumentIndexError()
|
raise ArgumentIndexError()
|
||||||
return SuccessReponse(self._item_info(track))
|
return SuccessReponse(self._item_info(track))
|
||||||
|
|
||||||
def cmd_playlistid(self, track_id=-1):
|
def cmd_playlistid(self, track_id=-1):
|
||||||
"""Gives metadata information about the entire playlist or a
|
return self.cmd_playlistinfo(self._id_to_index(track_id))
|
||||||
single track, given by its id.
|
|
||||||
"""
|
|
||||||
track_id = cast_arg(int, track_id)
|
|
||||||
if track_id == -1:
|
|
||||||
return self._items_info(self.playlist)
|
|
||||||
else:
|
|
||||||
for track in self.playlist:
|
|
||||||
if _item_id(track) == track_id:
|
|
||||||
return SuccessReponse(self._item_info(track))
|
|
||||||
# Loop finished with no track found.
|
|
||||||
raise ArgumentNotFoundError()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue