mpd: Make regexps work with re.VERBOSE

This commit is contained in:
Stein Magnus Jodal 2013-11-17 15:13:27 +01:00
parent f84bafe750
commit b37d163f33
11 changed files with 88 additions and 87 deletions

View File

@ -44,7 +44,7 @@ def handle_request(pattern, auth_required=True):
For example, if the command is ``do that thing`` the ``what`` argument will
be ``this thing``::
@handle_request('^do (?P<what>.+)$')
@handle_request('^do\ (?P<what>.+)$')
def do(what):
...
@ -56,7 +56,7 @@ def handle_request(pattern, auth_required=True):
if match is not None:
mpd_commands.add(
MpdCommand(name=match.group(), auth_required=auth_required))
compiled_pattern = re.compile(pattern, flags=re.UNICODE)
compiled_pattern = re.compile(pattern, flags=(re.UNICODE | re.VERBOSE))
if compiled_pattern in request_handlers:
raise ValueError('Tried to redefine handler for %s with %s' % (
pattern, func))

View File

@ -4,7 +4,7 @@ from mopidy.frontends.mpd.exceptions import MpdNoExistError
from mopidy.frontends.mpd.protocol import handle_request
@handle_request(r'^disableoutput "(?P<outputid>\d+)"$')
@handle_request(r'^disableoutput\ "(?P<outputid>\d+)"$')
def disableoutput(context, outputid):
"""
*musicpd.org, audio output section:*
@ -19,7 +19,7 @@ def disableoutput(context, outputid):
raise MpdNoExistError('No such audio output', command='disableoutput')
@handle_request(r'^enableoutput "(?P<outputid>\d+)"$')
@handle_request(r'^enableoutput\ "(?P<outputid>\d+)"$')
def enableoutput(context, outputid):
"""
*musicpd.org, audio output section:*

View File

@ -4,7 +4,7 @@ from mopidy.frontends.mpd.protocol import handle_request
from mopidy.frontends.mpd.exceptions import MpdNotImplemented
@handle_request(r'^subscribe "(?P<channel>[A-Za-z0-9:._-]+)"$')
@handle_request(r'^subscribe\ "(?P<channel>[A-Za-z0-9:._-]+)"$')
def subscribe(context, channel):
"""
*musicpd.org, client to client section:*
@ -18,7 +18,7 @@ def subscribe(context, channel):
raise MpdNotImplemented # TODO
@handle_request(r'^unsubscribe "(?P<channel>[A-Za-z0-9:._-]+)"$')
@handle_request(r'^unsubscribe\ "(?P<channel>[A-Za-z0-9:._-]+)"$')
def unsubscribe(context, channel):
"""
*musicpd.org, client to client section:*
@ -57,7 +57,7 @@ def readmessages(context):
@handle_request(
r'^sendmessage "(?P<channel>[A-Za-z0-9:._-]+)" "(?P<text>[^"]*)"$')
r'^sendmessage\ "(?P<channel>[A-Za-z0-9:._-]+)"\ "(?P<text>[^"]*)"$')
def sendmessage(context, channel, text):
"""
*musicpd.org, client to client section:*

View File

@ -29,7 +29,7 @@ def kill(context):
raise MpdPermissionError(command='kill')
@handle_request(r'^password "(?P<password>[^"]+)"$', auth_required=False)
@handle_request(r'^password\ "(?P<password>[^"]+)"$', auth_required=False)
def password_(context, password):
"""
*musicpd.org, connection section:*

View File

@ -6,7 +6,7 @@ from mopidy.frontends.mpd.exceptions import (
from mopidy.frontends.mpd.protocol import handle_request
@handle_request(r'^add "(?P<uri>[^"]*)"$')
@handle_request(r'^add\ "(?P<uri>[^"]*)"$')
def add(context, uri):
"""
*musicpd.org, current playlist section:*
@ -27,7 +27,7 @@ def add(context, uri):
raise MpdNoExistError('directory or file not found', command='add')
@handle_request(r'^addid "(?P<uri>[^"]*)"( "(?P<songpos>\d+)")*$')
@handle_request(r'^addid\ "(?P<uri>[^"]*)"(\ "(?P<songpos>\d+)")*$')
def addid(context, uri, songpos=None):
"""
*musicpd.org, current playlist section:*
@ -58,7 +58,7 @@ def addid(context, uri, songpos=None):
return ('Id', tl_tracks[0].tlid)
@handle_request(r'^delete "(?P<start>\d+):(?P<end>\d+)*"$')
@handle_request(r'^delete\ "(?P<start>\d+):(?P<end>\d+)*"$')
def delete_range(context, start, end=None):
"""
*musicpd.org, current playlist section:*
@ -79,7 +79,7 @@ def delete_range(context, start, end=None):
context.core.tracklist.remove(tlid=[tlid])
@handle_request(r'^delete "(?P<songpos>\d+)"$')
@handle_request(r'^delete\ "(?P<songpos>\d+)"$')
def delete_songpos(context, songpos):
"""See :meth:`delete_range`"""
try:
@ -91,7 +91,7 @@ def delete_songpos(context, songpos):
raise MpdArgError('Bad song index', command='delete')
@handle_request(r'^deleteid "(?P<tlid>\d+)"$')
@handle_request(r'^deleteid\ "(?P<tlid>\d+)"$')
def deleteid(context, tlid):
"""
*musicpd.org, current playlist section:*
@ -118,7 +118,7 @@ def clear(context):
context.core.tracklist.clear()
@handle_request(r'^move "(?P<start>\d+):(?P<end>\d+)*" "(?P<to>\d+)"$')
@handle_request(r'^move\ "(?P<start>\d+):(?P<end>\d+)*"\ "(?P<to>\d+)"$')
def move_range(context, start, to, end=None):
"""
*musicpd.org, current playlist section:*
@ -136,7 +136,7 @@ def move_range(context, start, to, end=None):
context.core.tracklist.move(start, end, to)
@handle_request(r'^move "(?P<songpos>\d+)" "(?P<to>\d+)"$')
@handle_request(r'^move\ "(?P<songpos>\d+)"\ "(?P<to>\d+)"$')
def move_songpos(context, songpos, to):
"""See :meth:`move_range`."""
songpos = int(songpos)
@ -144,7 +144,7 @@ def move_songpos(context, songpos, to):
context.core.tracklist.move(songpos, songpos + 1, to)
@handle_request(r'^moveid "(?P<tlid>\d+)" "(?P<to>\d+)"$')
@handle_request(r'^moveid\ "(?P<tlid>\d+)"\ "(?P<to>\d+)"$')
def moveid(context, tlid, to):
"""
*musicpd.org, current playlist section:*
@ -180,8 +180,8 @@ def playlist(context):
return playlistinfo(context)
@handle_request(r'^playlistfind (?P<tag>[^"]+) "(?P<needle>[^"]+)"$')
@handle_request(r'^playlistfind "(?P<tag>[^"]+)" "(?P<needle>[^"]+)"$')
@handle_request(r'^playlistfind\ (?P<tag>[^"]+)\ "(?P<needle>[^"]+)"$')
@handle_request(r'^playlistfind\ "(?P<tag>[^"]+)"\ "(?P<needle>[^"]+)"$')
def playlistfind(context, tag, needle):
"""
*musicpd.org, current playlist section:*
@ -203,7 +203,7 @@ def playlistfind(context, tag, needle):
raise MpdNotImplemented # TODO
@handle_request(r'^playlistid( "(?P<tlid>\d+)")*$')
@handle_request(r'^playlistid(\ "(?P<tlid>\d+)")*$')
def playlistid(context, tlid=None):
"""
*musicpd.org, current playlist section:*
@ -226,8 +226,8 @@ def playlistid(context, tlid=None):
@handle_request(r'^playlistinfo$')
@handle_request(r'^playlistinfo "(?P<songpos>-?\d+)"$')
@handle_request(r'^playlistinfo "(?P<start>\d+):(?P<end>\d+)*"$')
@handle_request(r'^playlistinfo\ "(?P<songpos>-?\d+)"$')
@handle_request(r'^playlistinfo\ "(?P<start>\d+):(?P<end>\d+)*"$')
def playlistinfo(context, songpos=None, start=None, end=None):
"""
*musicpd.org, current playlist section:*
@ -263,8 +263,8 @@ def playlistinfo(context, songpos=None, start=None, end=None):
return translator.tracks_to_mpd_format(tl_tracks, start, end)
@handle_request(r'^playlistsearch "(?P<tag>[^"]+)" "(?P<needle>[^"]+)"$')
@handle_request(r'^playlistsearch (?P<tag>\w+) "(?P<needle>[^"]+)"$')
@handle_request(r'^playlistsearch\ "(?P<tag>[^"]+)"\ "(?P<needle>[^"]+)"$')
@handle_request(r'^playlistsearch\ (?P<tag>\w+)\ "(?P<needle>[^"]+)"$')
def playlistsearch(context, tag, needle):
"""
*musicpd.org, current playlist section:*
@ -282,8 +282,8 @@ def playlistsearch(context, tag, needle):
raise MpdNotImplemented # TODO
@handle_request(r'^plchanges (?P<version>-?\d+)$')
@handle_request(r'^plchanges "(?P<version>-?\d+)"$')
@handle_request(r'^plchanges\ (?P<version>-?\d+)$')
@handle_request(r'^plchanges\ "(?P<version>-?\d+)"$')
def plchanges(context, version):
"""
*musicpd.org, current playlist section:*
@ -305,7 +305,7 @@ def plchanges(context, version):
context.core.tracklist.tl_tracks.get())
@handle_request(r'^plchangesposid "(?P<version>\d+)"$')
@handle_request(r'^plchangesposid\ "(?P<version>\d+)"$')
def plchangesposid(context, version):
"""
*musicpd.org, current playlist section:*
@ -330,7 +330,7 @@ def plchangesposid(context, version):
@handle_request(r'^shuffle$')
@handle_request(r'^shuffle "(?P<start>\d+):(?P<end>\d+)*"$')
@handle_request(r'^shuffle\ "(?P<start>\d+):(?P<end>\d+)*"$')
def shuffle(context, start=None, end=None):
"""
*musicpd.org, current playlist section:*
@ -347,7 +347,7 @@ def shuffle(context, start=None, end=None):
context.core.tracklist.shuffle(start, end)
@handle_request(r'^swap "(?P<songpos1>\d+)" "(?P<songpos2>\d+)"$')
@handle_request(r'^swap\ "(?P<songpos1>\d+)"\ "(?P<songpos2>\d+)"$')
def swap(context, songpos1, songpos2):
"""
*musicpd.org, current playlist section:*
@ -369,7 +369,7 @@ def swap(context, songpos1, songpos2):
context.core.tracklist.add(tracks)
@handle_request(r'^swapid "(?P<tlid1>\d+)" "(?P<tlid2>\d+)"$')
@handle_request(r'^swapid\ "(?P<tlid1>\d+)"\ "(?P<tlid2>\d+)"$')
def swapid(context, tlid1, tlid2):
"""
*musicpd.org, current playlist section:*

View File

@ -3,7 +3,7 @@ from __future__ import unicode_literals
from mopidy.frontends.mpd.protocol import handle_request
@handle_request(r'^[ ]*$')
@handle_request(r'^[\ ]*$')
def empty(context):
"""The original MPD server returns ``OK`` on an empty request."""
pass

View File

@ -12,7 +12,7 @@ from mopidy.frontends.mpd.protocol import handle_request, stored_playlists
QUERY_RE = (
r'(?P<mpd_query>("?([Aa]lbum|[Aa]rtist|[Aa]lbumartist|[Cc]omment|'
r'[Cc]omposer|[Dd]ate|[Ff]ile|[Ff]ilename|[Gg]enre|[Pp]erformer|'
r'[Tt]itle|[Tt]rack|[Aa]ny)"? "[^"]*"\s?)+)$')
r'[Tt]itle|[Tt]rack|[Aa]ny)"?\ "[^"]*"\s?)+)$')
def _get_field(field, search_results):
@ -40,7 +40,7 @@ def _artist_as_track(artist):
artists=[artist])
@handle_request(r'^count ' + QUERY_RE)
@handle_request(r'^count\ ' + QUERY_RE)
def count(context, mpd_query):
"""
*musicpd.org, music database section:*
@ -67,7 +67,7 @@ def count(context, mpd_query):
]
@handle_request(r'^find ' + QUERY_RE)
@handle_request(r'^find\ ' + QUERY_RE)
def find(context, mpd_query):
"""
*musicpd.org, music database section:*
@ -112,7 +112,7 @@ def find(context, mpd_query):
return translator.tracks_to_mpd_format(result_tracks)
@handle_request(r'^findadd ' + QUERY_RE)
@handle_request(r'^findadd\ ' + QUERY_RE)
def findadd(context, mpd_query):
"""
*musicpd.org, music database section:*
@ -131,9 +131,9 @@ def findadd(context, mpd_query):
@handle_request(
r'^list "?(?P<field>([Aa]rtist|[Aa]lbumartist|[Aa]lbum|[Cc]omposer|'
r'^list\ "?(?P<field>([Aa]rtist|[Aa]lbumartist|[Aa]lbum|[Cc]omposer|'
r'[Dd]ate|[Gg]enre|[Pp]erformer))"?'
r'( (?P<mpd_query>.*))?$')
r'(\ (?P<mpd_query>.*))?$')
def list_(context, field, mpd_query=None):
"""
*musicpd.org, music database section:*
@ -306,7 +306,7 @@ def _list_genre(context, query):
@handle_request(r'^listall$')
@handle_request(r'^listall "(?P<uri>[^"]+)"$')
@handle_request(r'^listall\ "(?P<uri>[^"]+)"$')
def listall(context, uri=None):
"""
*musicpd.org, music database section:*
@ -319,7 +319,7 @@ def listall(context, uri=None):
@handle_request(r'^listallinfo$')
@handle_request(r'^listallinfo "(?P<uri>[^"]+)"$')
@handle_request(r'^listallinfo\ "(?P<uri>[^"]+)"$')
def listallinfo(context, uri=None):
"""
*musicpd.org, music database section:*
@ -333,7 +333,7 @@ def listallinfo(context, uri=None):
@handle_request(r'^lsinfo$')
@handle_request(r'^lsinfo "(?P<uri>[^"]*)"$')
@handle_request(r'^lsinfo\ "(?P<uri>[^"]*)"$')
def lsinfo(context, uri=None):
"""
*musicpd.org, music database section:*
@ -355,7 +355,7 @@ def lsinfo(context, uri=None):
raise MpdNotImplemented # TODO
@handle_request(r'^rescan( "(?P<uri>[^"]+)")*$')
@handle_request(r'^rescan(\ "(?P<uri>[^"]+)")*$')
def rescan(context, uri=None):
"""
*musicpd.org, music database section:*
@ -367,7 +367,7 @@ def rescan(context, uri=None):
return update(context, uri, rescan_unmodified_files=True)
@handle_request(r'^search ' + QUERY_RE)
@handle_request(r'^search\ ' + QUERY_RE)
def search(context, mpd_query):
"""
*musicpd.org, music database section:*
@ -406,7 +406,7 @@ def search(context, mpd_query):
return translator.tracks_to_mpd_format(artists + albums + tracks)
@handle_request(r'^searchadd ' + QUERY_RE)
@handle_request(r'^searchadd\ ' + QUERY_RE)
def searchadd(context, mpd_query):
"""
*musicpd.org, music database section:*
@ -427,7 +427,7 @@ def searchadd(context, mpd_query):
context.core.tracklist.add(_get_tracks(results))
@handle_request(r'^searchaddpl "(?P<playlist_name>[^"]+)" ' + QUERY_RE)
@handle_request(r'^searchaddpl\ "(?P<playlist_name>[^"]+)"\ ' + QUERY_RE)
def searchaddpl(context, playlist_name, mpd_query):
"""
*musicpd.org, music database section:*
@ -456,7 +456,7 @@ def searchaddpl(context, playlist_name, mpd_query):
context.core.playlists.save(playlist)
@handle_request(r'^update( "(?P<uri>[^"]+)")*$')
@handle_request(r'^update(\ "(?P<uri>[^"]+)")*$')
def update(context, uri=None, rescan_unmodified_files=False):
"""
*musicpd.org, music database section:*

View File

@ -6,8 +6,8 @@ from mopidy.frontends.mpd.exceptions import (
MpdArgError, MpdNoExistError, MpdNotImplemented)
@handle_request(r'^consume (?P<state>[01])$')
@handle_request(r'^consume "(?P<state>[01])"$')
@handle_request(r'^consume\ (?P<state>[01])$')
@handle_request(r'^consume\ "(?P<state>[01])"$')
def consume(context, state):
"""
*musicpd.org, playback section:*
@ -24,7 +24,7 @@ def consume(context, state):
context.core.tracklist.consume = False
@handle_request(r'^crossfade "(?P<seconds>\d+)"$')
@handle_request(r'^crossfade\ "(?P<seconds>\d+)"$')
def crossfade(context, seconds):
"""
*musicpd.org, playback section:*
@ -96,7 +96,7 @@ def next_(context):
@handle_request(r'^pause$')
@handle_request(r'^pause "(?P<state>[01])"$')
@handle_request(r'^pause\ "(?P<state>[01])"$')
def pause(context, state=None):
"""
*musicpd.org, playback section:*
@ -129,8 +129,8 @@ def play(context):
return context.core.playback.play().get()
@handle_request(r'^playid (?P<tlid>-?\d+)$')
@handle_request(r'^playid "(?P<tlid>-?\d+)"$')
@handle_request(r'^playid\ (?P<tlid>-?\d+)$')
@handle_request(r'^playid\ "(?P<tlid>-?\d+)"$')
def playid(context, tlid):
"""
*musicpd.org, playback section:*
@ -157,8 +157,8 @@ def playid(context, tlid):
return context.core.playback.play(tl_tracks[0]).get()
@handle_request(r'^play (?P<songpos>-?\d+)$')
@handle_request(r'^play "(?P<songpos>-?\d+)"$')
@handle_request(r'^play\ (?P<songpos>-?\d+)$')
@handle_request(r'^play\ "(?P<songpos>-?\d+)"$')
def playpos(context, songpos):
"""
*musicpd.org, playback section:*
@ -252,8 +252,8 @@ def previous(context):
return context.core.playback.previous().get()
@handle_request(r'^random (?P<state>[01])$')
@handle_request(r'^random "(?P<state>[01])"$')
@handle_request(r'^random\ (?P<state>[01])$')
@handle_request(r'^random\ "(?P<state>[01])"$')
def random(context, state):
"""
*musicpd.org, playback section:*
@ -268,8 +268,8 @@ def random(context, state):
context.core.tracklist.random = False
@handle_request(r'^repeat (?P<state>[01])$')
@handle_request(r'^repeat "(?P<state>[01])"$')
@handle_request(r'^repeat\ (?P<state>[01])$')
@handle_request(r'^repeat\ "(?P<state>[01])"$')
def repeat(context, state):
"""
*musicpd.org, playback section:*
@ -284,7 +284,7 @@ def repeat(context, state):
context.core.tracklist.repeat = False
@handle_request(r'^replay_gain_mode "(?P<mode>(off|track|album))"$')
@handle_request(r'^replay_gain_mode\ "(?P<mode>(off|track|album))"$')
def replay_gain_mode(context, mode):
"""
*musicpd.org, playback section:*
@ -314,8 +314,8 @@ def replay_gain_status(context):
return 'off' # TODO
@handle_request(r'^seek (?P<songpos>\d+) (?P<seconds>\d+)$')
@handle_request(r'^seek "(?P<songpos>\d+)" "(?P<seconds>\d+)"$')
@handle_request(r'^seek\ (?P<songpos>\d+)\ (?P<seconds>\d+)$')
@handle_request(r'^seek\ "(?P<songpos>\d+)"\ "(?P<seconds>\d+)"$')
def seek(context, songpos, seconds):
"""
*musicpd.org, playback section:*
@ -335,7 +335,7 @@ def seek(context, songpos, seconds):
context.core.playback.seek(int(seconds) * 1000).get()
@handle_request(r'^seekid "(?P<tlid>\d+)" "(?P<seconds>\d+)"$')
@handle_request(r'^seekid\ "(?P<tlid>\d+)"\ "(?P<seconds>\d+)"$')
def seekid(context, tlid, seconds):
"""
*musicpd.org, playback section:*
@ -350,8 +350,8 @@ def seekid(context, tlid, seconds):
context.core.playback.seek(int(seconds) * 1000).get()
@handle_request(r'^seekcur "(?P<position>\d+)"$')
@handle_request(r'^seekcur "(?P<diff>[-+]\d+)"$')
@handle_request(r'^seekcur\ "(?P<position>\d+)"$')
@handle_request(r'^seekcur\ "(?P<diff>[-+]\d+)"$')
def seekcur(context, position=None, diff=None):
"""
*musicpd.org, playback section:*
@ -370,8 +370,8 @@ def seekcur(context, position=None, diff=None):
context.core.playback.seek(position).get()
@handle_request(r'^setvol (?P<volume>[-+]*\d+)$')
@handle_request(r'^setvol "(?P<volume>[-+]*\d+)"$')
@handle_request(r'^setvol\ (?P<volume>[-+]*\d+)$')
@handle_request(r'^setvol\ "(?P<volume>[-+]*\d+)"$')
def setvol(context, volume):
"""
*musicpd.org, playback section:*
@ -392,8 +392,8 @@ def setvol(context, volume):
context.core.playback.volume = volume
@handle_request(r'^single (?P<state>[01])$')
@handle_request(r'^single "(?P<state>[01])"$')
@handle_request(r'^single\ (?P<state>[01])$')
@handle_request(r'^single\ "(?P<state>[01])"$')
def single(context, state):
"""
*musicpd.org, playback section:*

View File

@ -43,7 +43,7 @@ def currentsong(context):
@handle_request(r'^idle$')
@handle_request(r'^idle (?P<subsystems>.+)$')
@handle_request(r'^idle\ (?P<subsystems>.+)$')
def idle(context, subsystems=None):
"""
*musicpd.org, status section:*

View File

@ -5,8 +5,8 @@ from mopidy.frontends.mpd.exceptions import MpdNotImplemented
@handle_request(
r'^sticker delete "(?P<field>[^"]+)" '
r'"(?P<uri>[^"]+)"( "(?P<name>[^"]+)")*$')
r'^sticker\ delete\ "(?P<field>[^"]+)"\ '
r'"(?P<uri>[^"]+)"(\ "(?P<name>[^"]+)")*$')
def sticker_delete(context, field, uri, name=None):
"""
*musicpd.org, sticker section:*
@ -20,7 +20,7 @@ def sticker_delete(context, field, uri, name=None):
@handle_request(
r'^sticker find "(?P<field>[^"]+)" "(?P<uri>[^"]+)" '
r'^sticker\ find\ "(?P<field>[^"]+)"\ "(?P<uri>[^"]+)"\ '
r'"(?P<name>[^"]+)"$')
def sticker_find(context, field, uri, name):
"""
@ -36,7 +36,7 @@ def sticker_find(context, field, uri, name):
@handle_request(
r'^sticker get "(?P<field>[^"]+)" "(?P<uri>[^"]+)" '
r'^sticker\ get\ "(?P<field>[^"]+)"\ "(?P<uri>[^"]+)"\ '
r'"(?P<name>[^"]+)"$')
def sticker_get(context, field, uri, name):
"""
@ -49,7 +49,7 @@ def sticker_get(context, field, uri, name):
raise MpdNotImplemented # TODO
@handle_request(r'^sticker list "(?P<field>[^"]+)" "(?P<uri>[^"]+)"$')
@handle_request(r'^sticker\ list\ "(?P<field>[^"]+)"\ "(?P<uri>[^"]+)"$')
def sticker_list(context, field, uri):
"""
*musicpd.org, sticker section:*
@ -62,8 +62,8 @@ def sticker_list(context, field, uri):
@handle_request(
r'^sticker set "(?P<field>[^"]+)" "(?P<uri>[^"]+)" '
r'"(?P<name>[^"]+)" "(?P<value>[^"]+)"$')
r'^sticker\ set\ "(?P<field>[^"]+)"\ "(?P<uri>[^"]+)"\ '
r'"(?P<name>[^"]+)"\ "(?P<value>[^"]+)"$')
def sticker_set(context, field, uri, name, value):
"""
*musicpd.org, sticker section:*

View File

@ -7,8 +7,8 @@ from mopidy.frontends.mpd.protocol import handle_request
from mopidy.frontends.mpd.translator import playlist_to_mpd_format
@handle_request(r'^listplaylist (?P<name>\w+)$')
@handle_request(r'^listplaylist "(?P<name>[^"]+)"$')
@handle_request(r'^listplaylist\ (?P<name>\w+)$')
@handle_request(r'^listplaylist\ "(?P<name>[^"]+)"$')
def listplaylist(context, name):
"""
*musicpd.org, stored playlists section:*
@ -29,8 +29,8 @@ def listplaylist(context, name):
return ['file: %s' % t.uri for t in playlist.tracks]
@handle_request(r'^listplaylistinfo (?P<name>\w+)$')
@handle_request(r'^listplaylistinfo "(?P<name>[^"]+)"$')
@handle_request(r'^listplaylistinfo\ (?P<name>\w+)$')
@handle_request(r'^listplaylistinfo\ "(?P<name>[^"]+)"$')
def listplaylistinfo(context, name):
"""
*musicpd.org, stored playlists section:*
@ -92,7 +92,8 @@ def listplaylists(context):
return result
@handle_request(r'^load "(?P<name>[^"]+)"( "(?P<start>\d+):(?P<end>\d+)*")*$')
@handle_request(
r'^load\ "(?P<name>[^"]+)"(\ "(?P<start>\d+):(?P<end>\d+)*")*$')
def load(context, name, start=None, end=None):
"""
*musicpd.org, stored playlists section:*
@ -124,7 +125,7 @@ def load(context, name, start=None, end=None):
context.core.tracklist.add(playlist.tracks[start:end])
@handle_request(r'^playlistadd "(?P<name>[^"]+)" "(?P<uri>[^"]+)"$')
@handle_request(r'^playlistadd\ "(?P<name>[^"]+)"\ "(?P<uri>[^"]+)"$')
def playlistadd(context, name, uri):
"""
*musicpd.org, stored playlists section:*
@ -138,7 +139,7 @@ def playlistadd(context, name, uri):
raise MpdNotImplemented # TODO
@handle_request(r'^playlistclear "(?P<name>[^"]+)"$')
@handle_request(r'^playlistclear\ "(?P<name>[^"]+)"$')
def playlistclear(context, name):
"""
*musicpd.org, stored playlists section:*
@ -150,7 +151,7 @@ def playlistclear(context, name):
raise MpdNotImplemented # TODO
@handle_request(r'^playlistdelete "(?P<name>[^"]+)" "(?P<songpos>\d+)"$')
@handle_request(r'^playlistdelete\ "(?P<name>[^"]+)"\ "(?P<songpos>\d+)"$')
def playlistdelete(context, name, songpos):
"""
*musicpd.org, stored playlists section:*
@ -163,8 +164,8 @@ def playlistdelete(context, name, songpos):
@handle_request(
r'^playlistmove "(?P<name>[^"]+)" '
r'"(?P<from_pos>\d+)" "(?P<to_pos>\d+)"$')
r'^playlistmove\ "(?P<name>[^"]+)"\ '
r'"(?P<from_pos>\d+)"\ "(?P<to_pos>\d+)"$')
def playlistmove(context, name, from_pos, to_pos):
"""
*musicpd.org, stored playlists section:*
@ -183,7 +184,7 @@ def playlistmove(context, name, from_pos, to_pos):
raise MpdNotImplemented # TODO
@handle_request(r'^rename "(?P<old_name>[^"]+)" "(?P<new_name>[^"]+)"$')
@handle_request(r'^rename\ "(?P<old_name>[^"]+)"\ "(?P<new_name>[^"]+)"$')
def rename(context, old_name, new_name):
"""
*musicpd.org, stored playlists section:*
@ -195,7 +196,7 @@ def rename(context, old_name, new_name):
raise MpdNotImplemented # TODO
@handle_request(r'^rm "(?P<name>[^"]+)"$')
@handle_request(r'^rm\ "(?P<name>[^"]+)"$')
def rm(context, name):
"""
*musicpd.org, stored playlists section:*
@ -207,7 +208,7 @@ def rm(context, name):
raise MpdNotImplemented # TODO
@handle_request(r'^save "(?P<name>[^"]+)"$')
@handle_request(r'^save\ "(?P<name>[^"]+)"$')
def save(context, name):
"""
*musicpd.org, stored playlists section:*