1. Luke Plant
  2. playerdo

Source

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):
    sys.stdout.write(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
    commands.append((c,
                     getattr(Player, c).__doc__.strip().replace("\n", " "),
                     mk_command(c)))

commands.extend([
    ("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:
        print_usage(players)
        sys.exit(1)

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