From 0f20651f8b0aea2c4104d3f844366b5cf1b16b8b Mon Sep 17 00:00:00 2001 From: Alessandro Ghedini Date: Wed, 14 May 2014 23:37:57 +0200 Subject: [PATCH] Support commands with options in play plugin This adds support for specifying additional options in the command config value for the play plugin. Example: play: command: /usr/bin/command --option1 --option2 some_other_option --- beetsplug/play.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/beetsplug/play.py b/beetsplug/play.py index 1ca9813bf..d28e26ca9 100644 --- a/beetsplug/play.py +++ b/beetsplug/play.py @@ -21,6 +21,7 @@ from beets import ui from beets import util import platform import logging +import shlex from tempfile import NamedTemporaryFile log = logging.getLogger('beets') @@ -31,18 +32,21 @@ def play_music(lib, opts, args): command passing that playlist. """ - command = config['play']['command'].get() + cmd = [] + + for part in shlex.split(config['play']['command'].get(unicode)): + cmd.append(part) # If a command isn't set then let the OS decide how to open the playlist. - if not command: + if not cmd: sys_name = platform.system() if sys_name == 'Darwin': - command = 'open' + cmd.append('open') elif sys_name == 'Windows': - command = 'start' + cmd.append('start') else: # If not Mac or Win then assume Linux(or posix based). - command = 'xdg-open' + cmd.append('xdg-open') # Preform search by album and add folders rather then tracks to playlist. if opts.album: @@ -79,10 +83,12 @@ def play_music(lib, opts, args): m3u.write(item + '\n') m3u.close() + cmd.append(m3u.name) + # Invoke the command and log the output. - output = util.command_output([command, m3u.name]) + output = util.command_output(cmd) if output: - log.debug(u'Output of {0}: {1}'.format(command, output)) + log.debug(u'Output of {0}: {1}'.format(cmd[0], output)) ui.print_(u'Playing {0} {1}.'.format(len(paths), item_type))