1. Luke Plant
  2. playerdo


playerdo / player_do

Luke Plant e91216b 

Luke Plant 1543776 

Luke Plant e91216b 

Luke Plant 1543776 

Luke Plant abe4477 

Luke Plant 1543776 

Luke Plant e91216b 

Luke Plant 1543776 

Luke Plant e91216b 
Luke Plant 1543776 

#!/usr/bin/env python

# Wrapper for controlling various music players, so that you can define keyboard
# shortcuts that work for whatever player you are using.  Ideally it will still
# work even if multiple players are running if all but one are 'stopped', but
# some music players do not have such a state or it cannot be determined.

from playerdo.main import do_test, do_command, find_players
from playerdo.backends.base import Player
import sys

def usage(players):
    # Print help and list of supported players
    help = """Usage: player_do <command>

  Media players that are currently running will be detected, and the command will
  be passed on to the first, giving priority to players that seem to be active.

<command> is one of:
    max_len = len(sorted(commands, key=lambda c: len(c[0]))[-1][0])
    for name, doc, f in commands:
        help += " " + name +  " "*(max_len - len(name) + 2) + doc + "\n"

    help += """
Not all operations are supported or fully supported by all players.

Currently supported players are:
    for P in players:
        n = getattr(P, 'friendly_name', None)
        if n is not None:
            help += " " + n + "\n"

    return help

def print_usage(players):

# List of commands: (name, docstring, callable)

commands = []

for c in ["play", "pause", "unpause", "togglepause", "playpause", "stop", "next", "prev", "osd"]:
    def mk_command(name):
        def command(players):
            return do_command(name, players)
        return command
                     getattr(Player, c).__doc__.strip().replace("\n", " "),

    ("test", "Tests that all dependencies are available.", do_test),
    ("help", "Prints help.", print_usage),

command_dict = dict((name, f) for name, doc, f in commands)

if __name__ == '__main__':
    players = find_players()
    if len(sys.argv) < 2:

    name = sys.argv[1]
    command = command_dict.get(name, None)
    if command is None:
        sys.stderr.write("Unrecognised command '%s'.\n\n" % name)