diff --git a/mopidy/models.py b/mopidy/models.py index 64dffd29..86561bc3 100644 --- a/mopidy/models.py +++ b/mopidy/models.py @@ -110,7 +110,7 @@ class Track(ImmutableObject): """List of :class:`Artist`. Read-only.""" return copy(self._artists) - def mpd_format(self, position=0): + def mpd_format(self, position=0, search_result=False): """ Format track for output to MPD client. @@ -118,18 +118,23 @@ class Track(ImmutableObject): :type position: integer :rtype: list of two-tuples """ - return [ + result = [ ('file', self.uri or ''), ('Time', self.length and (self.length // 1000) or 0), ('Artist', self.mpd_format_artists()), ('Title', self.title or ''), ('Album', self.album and self.album.name or ''), - ('Track', '%d/%d' % (self.track_no, - self.album and self.album.num_tracks or 0)), ('Date', self.date or ''), - ('Pos', position), - ('Id', self.id or position), ] + if self.album is not None and self.album.num_tracks != 0: + result.append(('Track', '%d/%d' % ( + self.track_no, self.album.num_tracks))) + else: + result.append(('Track', self.track_no)) + if not search_result: + result.append(('Pos', position)) + result.append(('Id', self.id or position)) + return result def mpd_format_artists(self): """ @@ -170,7 +175,7 @@ class Playlist(ImmutableObject): """The number of tracks in the playlist. Read-only.""" return len(self._tracks) - def mpd_format(self, start=0, end=None): + def mpd_format(self, start=0, end=None, search_result=False): """ Format playlist for output to MPD client. @@ -186,7 +191,7 @@ class Playlist(ImmutableObject): end = self.length tracks = [] for track, position in zip(self.tracks[start:end], range(start, end)): - tracks.append(track.mpd_format(position)) + tracks.append(track.mpd_format(position, search_result)) return tracks def with_(self, uri=None, name=None, tracks=None): diff --git a/mopidy/mpd/handler.py b/mopidy/mpd/handler.py index 23803059..f3395fd8 100644 --- a/mopidy/mpd/handler.py +++ b/mopidy/mpd/handler.py @@ -360,7 +360,8 @@ class MpdHandler(object): @register(r'^search "(?P(album|artist|filename|title))" "(?P[^"]+)"$') def _search(self, type, what): - return self.backend.library.search(type, what).mpd_format() + return self.backend.library.search(type, what).mpd_format( + search_result=True) @register(r'^seek "(?P\d+)" "(?P\d+)"$') def _seek(self, songpos, seconds):