Ejemplo n.º 1
0
 def translate(self, track):
     base_path = self.media_dir.encode('utf-8')
     result = dict(translator.track_to_mpd_format(track))
     result['file'] = uri_to_path(result['file'])[len(base_path) + 1:]
     result['key'] = os.path.basename(result['file'])
     result['mtime'] = mtime('')
     return translator.order_mpd_track_info(result.items())
Ejemplo n.º 2
0
def playlistinfo(context, songpos=None, start=None, end=None):
    """
    *musicpd.org, current playlist section:*

        ``playlistinfo [[SONGPOS] | [START:END]]``

        Displays a list of all songs in the playlist, or if the optional
        argument is given, displays information only for the song
        ``SONGPOS`` or the range of songs ``START:END``.

    *ncmpc and mpc:*

    - uses negative indexes, like ``playlistinfo "-1"``, to request
      the entire playlist
    """
    if songpos is not None:
        songpos = int(songpos)
        cp_track = context.backend.current_playlist.get(cpid=songpos).get()
        return track_to_mpd_format(cp_track, position=songpos)
    else:
        if start is None:
            start = 0
        start = int(start)
        if not (0 <= start <= context.backend.current_playlist.length.get()):
            raise MpdArgError(u"Bad song index", command=u"playlistinfo")
        if end is not None:
            end = int(end)
            if end > context.backend.current_playlist.length.get():
                end = None
        cp_tracks = context.backend.current_playlist.cp_tracks.get()
        return tracks_to_mpd_format(cp_tracks, start, end)
Ejemplo n.º 3
0
def playlistinfo(context, songpos=None, start=None, end=None):
    """
    *musicpd.org, current playlist section:*

        ``playlistinfo [[SONGPOS] | [START:END]]``

        Displays a list of all songs in the playlist, or if the optional
        argument is given, displays information only for the song
        ``SONGPOS`` or the range of songs ``START:END``.

    *ncmpc and mpc:*

    - uses negative indexes, like ``playlistinfo "-1"``, to request
      the entire playlist
    """
    if songpos == '-1':
        songpos = None
    if songpos is not None:
        songpos = int(songpos)
        tl_track = context.core.tracklist.tl_tracks.get()[songpos]
        return translator.track_to_mpd_format(tl_track, position=songpos)
    else:
        if start is None:
            start = 0
        start = int(start)
        if not (0 <= start <= context.core.tracklist.length.get()):
            raise MpdArgError('Bad song index', command='playlistinfo')
        if end is not None:
            end = int(end)
            if end > context.core.tracklist.length.get():
                end = None
        tl_tracks = context.core.tracklist.tl_tracks.get()
        return translator.tracks_to_mpd_format(tl_tracks, start, end)
Ejemplo n.º 4
0
 def translate(self, track):
     base_path = self.media_dir.encode("utf-8")
     result = dict(translator.track_to_mpd_format(track))
     result["file"] = uri_to_path(result["file"])[len(base_path) + 1 :]
     result["key"] = os.path.basename(result["file"])
     result["mtime"] = mtime("")
     return translator.order_mpd_track_info(result.items())
Ejemplo n.º 5
0
 def translate(self, track):
     base_path = self.media_dir.encode('utf-8')
     result = dict(translator.track_to_mpd_format(track))
     result['file'] = uri_to_path(result['file'])[len(base_path) + 1:]
     result['key'] = os.path.basename(result['file'])
     result['mtime'] = mtime('')
     return translator.order_mpd_track_info(result.items())
Ejemplo n.º 6
0
 def translate(self, track):
     folder = settings.LOCAL_MUSIC_PATH
     result = dict(translator.track_to_mpd_format(track))
     result['file'] = uri_to_path(result['file'])
     result['file'] = result['file'][len(folder)+1:]
     result['key'] = os.path.basename(result['file'])
     result['mtime'] = mtime('')
     return translator.order_mpd_track_info(result.items())
Ejemplo n.º 7
0
 def translate(self, track):
     folder = settings.LOCAL_MUSIC_PATH
     result = dict(translator.track_to_mpd_format(track))
     result['file'] = uri_to_path(result['file'])
     result['file'] = result['file'][len(folder) + 1:]
     result['key'] = os.path.basename(result['file'])
     result['mtime'] = mtime('')
     return translator.order_mpd_track_info(result.items())
Ejemplo n.º 8
0
 def test_track_to_mpd_format_for_empty_track(self):
     result = translator.track_to_mpd_format(Track())
     self.assertIn(("file", ""), result)
     self.assertIn(("Time", 0), result)
     self.assertIn(("Artist", ""), result)
     self.assertIn(("Title", ""), result)
     self.assertIn(("Album", ""), result)
     self.assertIn(("Track", 0), result)
     self.assertIn(("Date", ""), result)
     self.assertEqual(len(result), 7)
Ejemplo n.º 9
0
 def test_track_to_mpd_format_for_empty_track(self):
     result = translator.track_to_mpd_format(Track())
     self.assert_(('file', '') in result)
     self.assert_(('Time', 0) in result)
     self.assert_(('Artist', '') in result)
     self.assert_(('Title', '') in result)
     self.assert_(('Album', '') in result)
     self.assert_(('Track', 0) in result)
     self.assert_(('Date', '') in result)
     self.assertEqual(len(result), 7)
Ejemplo n.º 10
0
 def test_track_to_mpd_format_for_empty_track(self):
     result = translator.track_to_mpd_format(Track())
     self.assertIn(('file', ''), result)
     self.assertIn(('Time', 0), result)
     self.assertIn(('Artist', ''), result)
     self.assertIn(('Title', ''), result)
     self.assertIn(('Album', ''), result)
     self.assertIn(('Track', 0), result)
     self.assertIn(('Date', ''), result)
     self.assertEqual(len(result), 7)
Ejemplo n.º 11
0
 def test_track_to_mpd_format_for_nonempty_track(self):
     result = translator.track_to_mpd_format(TlTrack(122, self.track), position=9)
     self.assertIn(("file", "a uri"), result)
     self.assertIn(("Time", 137), result)
     self.assertIn(("Artist", "an artist"), result)
     self.assertIn(("Title", "a name"), result)
     self.assertIn(("Album", "an album"), result)
     self.assertIn(("AlbumArtist", "an other artist"), result)
     self.assertIn(("Track", "7/13"), result)
     self.assertIn(("Date", datetime.date(1977, 1, 1)), result)
     self.assertIn(("Pos", 9), result)
     self.assertIn(("Id", 122), result)
     self.assertEqual(len(result), 10)
Ejemplo n.º 12
0
 def test_track_to_mpd_format_for_nonempty_track(self):
     result = translator.track_to_mpd_format(self.track, position=9, cpid=122)
     self.assert_(('file', 'a uri') in result)
     self.assert_(('Time', 137) in result)
     self.assert_(('Artist', 'an artist') in result)
     self.assert_(('Title', 'a name') in result)
     self.assert_(('Album', 'an album') in result)
     self.assert_(('AlbumArtist', 'an other artist') in result)
     self.assert_(('Track', '7/13') in result)
     self.assert_(('Date', dt.date(1977, 1, 1)) in result)
     self.assert_(('Pos', 9) in result)
     self.assert_(('Id', 122) in result)
     self.assertEqual(len(result), 10)
Ejemplo n.º 13
0
Archivo: status.py Proyecto: xim/mopidy
def currentsong(context):
    """
    *musicpd.org, status section:*

        ``currentsong``

        Displays the song info of the current song (same song that is
        identified in status).
    """
    current_cp_track = context.backend.playback.current_cp_track.get()
    if current_cp_track is not None:
        position = context.backend.playback.current_playlist_position.get()
        return track_to_mpd_format(current_cp_track, position=position)
Ejemplo n.º 14
0
def currentsong(context):
    """
    *musicpd.org, status section:*

        ``currentsong``

        Displays the song info of the current song (same song that is
        identified in status).
    """
    tl_track = context.core.playback.current_tl_track.get()
    if tl_track is not None:
        position = context.core.tracklist.index(tl_track).get()
        return track_to_mpd_format(tl_track, position=position)
Ejemplo n.º 15
0
def currentsong(context):
    """
    *musicpd.org, status section:*

        ``currentsong``

        Displays the song info of the current song (same song that is
        identified in status).
    """
    current_cp_track = context.backend.playback.current_cp_track.get()
    if current_cp_track is not None:
        position = context.backend.playback.current_playlist_position.get()
        return track_to_mpd_format(current_cp_track, position=position)
Ejemplo n.º 16
0
def currentsong(context):
    """
    *musicpd.org, status section:*

        ``currentsong``

        Displays the song info of the current song (same song that is
        identified in status).
    """
    tl_track = context.core.playback.current_tl_track.get()
    if tl_track is not None:
        position = context.core.tracklist.index(tl_track).get()
        return track_to_mpd_format(tl_track, position=position)
Ejemplo n.º 17
0
 def test_track_to_mpd_format_for_nonempty_track(self):
     result = translator.track_to_mpd_format(TlTrack(122, self.track),
                                             position=9)
     self.assertIn(('file', 'a uri'), result)
     self.assertIn(('Time', 137), result)
     self.assertIn(('Artist', 'an artist'), result)
     self.assertIn(('Title', 'a name'), result)
     self.assertIn(('Album', 'an album'), result)
     self.assertIn(('AlbumArtist', 'an other artist'), result)
     self.assertIn(('Track', '7/13'), result)
     self.assertIn(('Date', datetime.date(1977, 1, 1)), result)
     self.assertIn(('Pos', 9), result)
     self.assertIn(('Id', 122), result)
     self.assertEqual(len(result), 10)
Ejemplo n.º 18
0
 def test_track_to_mpd_format_for_nonempty_track(self):
     result = translator.track_to_mpd_format(
         TlTrack(122, self.track), position=9)
     self.assertIn(('file', 'a uri'), result)
     self.assertIn(('Time', 137), result)
     self.assertIn(('Artist', 'an artist'), result)
     self.assertIn(('Title', 'a name'), result)
     self.assertIn(('Album', 'an album'), result)
     self.assertIn(('AlbumArtist', 'an other artist'), result)
     self.assertIn(('Track', '7/13'), result)
     self.assertIn(('Date', datetime.date(1977, 1, 1)), result)
     self.assertIn(('Pos', 9), result)
     self.assertIn(('Id', 122), result)
     self.assertEqual(len(result), 10)
Ejemplo n.º 19
0
def playlistid(context, cpid=None):
    """
    *musicpd.org, current playlist section:*

        ``playlistid {SONGID}``

        Displays a list of songs in the playlist. ``SONGID`` is optional
        and specifies a single song to display info for.
    """
    if cpid is not None:
        try:
            cpid = int(cpid)
            cp_track = context.backend.current_playlist.get(cpid=cpid).get()
            position = context.backend.current_playlist.index(cp_track).get()
            return track_to_mpd_format(cp_track, position=position)
        except LookupError:
            raise MpdNoExistError(u"No such song", command=u"playlistid")
    else:
        return tracks_to_mpd_format(context.backend.current_playlist.cp_tracks.get())
Ejemplo n.º 20
0
def playlistfind(context, tag, needle):
    """
    *musicpd.org, current playlist section:*

        ``playlistfind {TAG} {NEEDLE}``

        Finds songs in the current playlist with strict matching.

    *GMPC:*

    - does not add quotes around the tag.
    """
    if tag == 'filename':
        tl_tracks = context.core.tracklist.filter(uri=needle).get()
        if not tl_tracks:
            return None
        position = context.core.tracklist.index(tl_tracks[0]).get()
        return translator.track_to_mpd_format(tl_tracks[0], position=position)
    raise MpdNotImplemented  # TODO
Ejemplo n.º 21
0
def playlistfind(context, tag, needle):
    """
    *musicpd.org, current playlist section:*

        ``playlistfind {TAG} {NEEDLE}``

        Finds songs in the current playlist with strict matching.

    *GMPC:*

    - does not add quotes around the tag.
    """
    if tag == 'filename':
        tl_tracks = context.core.tracklist.filter(uri=[needle]).get()
        if not tl_tracks:
            return None
        position = context.core.tracklist.index(tl_tracks[0]).get()
        return translator.track_to_mpd_format(tl_tracks[0], position=position)
    raise MpdNotImplemented  # TODO
Ejemplo n.º 22
0
def playlistid(context, tlid=None):
    """
    *musicpd.org, current playlist section:*

        ``playlistid {SONGID}``

        Displays a list of songs in the playlist. ``SONGID`` is optional
        and specifies a single song to display info for.
    """
    if tlid is not None:
        tlid = int(tlid)
        tl_tracks = context.core.tracklist.filter(tlid=[tlid]).get()
        if not tl_tracks:
            raise MpdNoExistError('No such song', command='playlistid')
        position = context.core.tracklist.index(tl_tracks[0]).get()
        return translator.track_to_mpd_format(tl_tracks[0], position=position)
    else:
        return translator.tracks_to_mpd_format(
            context.core.tracklist.tl_tracks.get())
Ejemplo n.º 23
0
def playlistid(context, tlid=None):
    """
    *musicpd.org, current playlist section:*

        ``playlistid {SONGID}``

        Displays a list of songs in the playlist. ``SONGID`` is optional
        and specifies a single song to display info for.
    """
    if tlid is not None:
        tlid = int(tlid)
        tl_tracks = context.core.tracklist.filter(tlid=tlid).get()
        if not tl_tracks:
            raise MpdNoExistError('No such song', command='playlistid')
        position = context.core.tracklist.index(tl_tracks[0]).get()
        return translator.track_to_mpd_format(tl_tracks[0], position=position)
    else:
        return translator.tracks_to_mpd_format(
            context.core.tracklist.tl_tracks.get())
Ejemplo n.º 24
0
def playlistfind(context, tag, needle):
    """
    *musicpd.org, current playlist section:*

        ``playlistfind {TAG} {NEEDLE}``

        Finds songs in the current playlist with strict matching.

    *GMPC:*

    - does not add quotes around the tag.
    """
    if tag == 'filename':
        try:
            cp_track = context.backend.current_playlist.get(uri=needle).get()
            position = context.backend.current_playlist.index(cp_track).get()
            return track_to_mpd_format(cp_track, position=position)
        except LookupError:
            return None
    raise MpdNotImplemented  # TODO
Ejemplo n.º 25
0
def playlistfind(context, tag, needle):
    """
    *musicpd.org, current playlist section:*

        ``playlistfind {TAG} {NEEDLE}``

        Finds songs in the current playlist with strict matching.

    *GMPC:*

    - does not add quotes around the tag.
    """
    if tag == "filename":
        try:
            cp_track = context.backend.current_playlist.get(uri=needle).get()
            position = context.backend.current_playlist.index(cp_track).get()
            return track_to_mpd_format(cp_track, position=position)
        except LookupError:
            return None
    raise MpdNotImplemented  # TODO
Ejemplo n.º 26
0
def playlistid(context, cpid=None):
    """
    *musicpd.org, current playlist section:*

        ``playlistid {SONGID}``

        Displays a list of songs in the playlist. ``SONGID`` is optional
        and specifies a single song to display info for.
    """
    if cpid is not None:
        try:
            cpid = int(cpid)
            cp_track = context.backend.current_playlist.get(cpid=cpid).get()
            position = context.backend.current_playlist.index(cp_track).get()
            return track_to_mpd_format(cp_track, position=position)
        except LookupError:
            raise MpdNoExistError(u'No such song', command=u'playlistid')
    else:
        return tracks_to_mpd_format(
            context.backend.current_playlist.cp_tracks.get())
Ejemplo n.º 27
0
 def test_track_to_mpd_format_with_position_and_tlid(self):
     result = translator.track_to_mpd_format(
         TlTrack(2, Track()), position=1)
     self.assertIn(('Pos', 1), result)
     self.assertIn(('Id', 2), result)
Ejemplo n.º 28
0
 def test_track_to_mpd_format_with_tlid(self):
     result = translator.track_to_mpd_format(TlTrack(1, Track()))
     self.assertNotIn(('Id', 1), result)
Ejemplo n.º 29
0
 def test_track_to_mpd_format_with_position(self):
     result = translator.track_to_mpd_format(Track(), position=1)
     self.assertNotIn(("Pos", 1), result)
Ejemplo n.º 30
0
Archivo: models.py Proyecto: bok/mopidy
 def mpd_format(self, *args, **kwargs):
     return translator.track_to_mpd_format(self, *args, **kwargs)
Ejemplo n.º 31
0
 def test_track_to_mpd_format_musicbrainz_albumid(self):
     album = self.track.album.copy(musicbrainz_id="foo")
     track = self.track.copy(album=album)
     result = translator.track_to_mpd_format(track)
     self.assertIn(("MUSICBRAINZ_ALBUMID", "foo"), result)
Ejemplo n.º 32
0
 def test_track_to_mpd_format_with_position_and_cpid(self):
     result = translator.track_to_mpd_format(Track(), position=1, cpid=2)
     self.assert_(('Pos', 1) in result)
     self.assert_(('Id', 2) in result)
Ejemplo n.º 33
0
 def mpd_format(self, *args, **kwargs):
     from mopidy.frontends.mpd import translator
     return translator.track_to_mpd_format(self, *args, **kwargs)
Ejemplo n.º 34
0
 def test_track_to_mpd_format_musicbrainz_trackid(self):
     track = self.track.copy(musicbrainz_id="foo")
     result = translator.track_to_mpd_format(track)
     self.assertIn(("MUSICBRAINZ_TRACKID", "foo"), result)
Ejemplo n.º 35
0
 def test_track_to_mpd_format_musicbrainz_albumartistid(self):
     artist = list(self.track.artists)[0].copy(musicbrainz_id='foo')
     album = self.track.album.copy(artists=[artist])
     track = self.track.copy(album=album)
     result = translator.track_to_mpd_format(track)
     self.assertIn(('MUSICBRAINZ_ALBUMARTISTID', 'foo'), result)
Ejemplo n.º 36
0
 def test_track_to_mpd_format_with_position_and_tlid(self):
     result = translator.track_to_mpd_format(TlTrack(2, Track()),
                                             position=1)
     self.assertIn(('Pos', 1), result)
     self.assertIn(('Id', 2), result)
Ejemplo n.º 37
0
 def test_track_to_mpd_format_with_position_and_cpid(self):
     result = translator.track_to_mpd_format(Track(), position=1, cpid=2)
     self.assert_(('Pos', 1) in result)
     self.assert_(('Id', 2) in result)
Ejemplo n.º 38
0
 def test_track_to_mpd_format_musicbrainz_albumid(self):
     album = self.track.album.copy(musicbrainz_id='foo')
     track = self.track.copy(album=album)
     result = translator.track_to_mpd_format(track)
     self.assert_(('MUSICBRAINZ_ALBUMID', 'foo') in result)
Ejemplo n.º 39
0
 def test_track_to_mpd_format_musicbrainz_trackid(self):
     track = self.track.copy(musicbrainz_id='foo')
     result = translator.track_to_mpd_format(track)
     self.assertIn(('MUSICBRAINZ_TRACKID', 'foo'), result)
Ejemplo n.º 40
0
 def test_track_to_mpd_format_with_position(self):
     result = translator.track_to_mpd_format(Track(), position=1)
     self.assert_(('Pos', 1) not in result)
Ejemplo n.º 41
0
 def test_track_to_mpd_format_musicbrainz_albumid(self):
     artist = list(self.track.artists)[0].copy(musicbrainz_id='foo')
     album = self.track.album.copy(artists=[artist])
     track = self.track.copy(album=album)
     result = translator.track_to_mpd_format(track)
     self.assert_(('MUSICBRAINZ_ALBUMARTISTID', 'foo') in result)
Ejemplo n.º 42
0
 def test_track_to_mpd_format_musicbrainz_albumid(self):
     album = self.track.album.copy(musicbrainz_id='foo')
     track = self.track.copy(album=album)
     result = translator.track_to_mpd_format(track)
     self.assertIn(('MUSICBRAINZ_ALBUMID', 'foo'), result)
Ejemplo n.º 43
0
 def test_track_to_mpd_format_with_cpid(self):
     result = translator.track_to_mpd_format(Track(), cpid=1)
     self.assert_(('Id', 1) not in result)
Ejemplo n.º 44
0
 def test_track_to_mpd_format_musicbrainz_artistid(self):
     artist = list(self.track.artists)[0].copy(musicbrainz_id='foo')
     track = self.track.copy(artists=[artist])
     result = translator.track_to_mpd_format(track)
     self.assertIn(('MUSICBRAINZ_ARTISTID', 'foo'), result)
Ejemplo n.º 45
0
 def test_track_to_mpd_format_musicbrainz_trackid(self):
     track = self.track.copy(musicbrainz_id='foo')
     result = translator.track_to_mpd_format(track)
     self.assert_(('MUSICBRAINZ_TRACKID', 'foo') in result)
Ejemplo n.º 46
0
 def test_track_to_mpd_format_musicbrainz_artistid(self):
     artist = list(self.track.artists)[0].copy(musicbrainz_id="foo")
     track = self.track.copy(artists=[artist])
     result = translator.track_to_mpd_format(track)
     self.assertIn(("MUSICBRAINZ_ARTISTID", "foo"), result)
Ejemplo n.º 47
0
 def test_track_to_mpd_format_musicbrainz_artistid(self):
     artist = list(self.track.artists)[0].copy(musicbrainz_id='foo')
     track = self.track.copy(artists=[artist])
     result = translator.track_to_mpd_format(track)
     self.assert_(('MUSICBRAINZ_ARTISTID', 'foo') in result)
Ejemplo n.º 48
0
 def test_track_to_mpd_format_with_position(self):
     result = translator.track_to_mpd_format(Track(), position=1)
     self.assertNotIn(('Pos', 1), result)
Ejemplo n.º 49
0
 def test_track_to_mpd_format_with_tlid(self):
     result = translator.track_to_mpd_format(TlTrack(1, Track()))
     self.assertNotIn(('Id', 1), result)
Ejemplo n.º 50
0
 def test_track_to_mpd_format_with_cpid(self):
     result = translator.track_to_mpd_format(Track(), cpid=1)
     self.assert_(('Id', 1) not in result)