playerdo / playerdo / backends /

import os.path
import re
import socket

from playerdo.backends.base import Player
from playerdo.utils import process_retval, PlayerException

class ShellFm(Player):

    process_name = "shell-fm"
    friendly_name = "shell-fm"

    def _socket_path(self):
        rc_path = os.path.join(os.environ['HOME'], '.shell-fm', 'shell-fm.rc')
        conf = file(rc_path).read()
        return'^\s*unix\s*=\s*([^#\s]+)', conf, re.MULTILINE).groups()[0]

    def _send_command(self, command):
        s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
        s.send(command + "\n")

    def is_stopped(self):
        return not os.path.isfile(os.path.join(os.environ['HOME'],

    def check_dependencies(self):
        retval = []
            p = self._socket_path()
        except Exception:
            retval.append("Cannot find configuration file ~/.shell-fm/shell-fm.rc, or the 'unix' configuration item in that file.")
        return retval

    def play(self):
        if not self.is_stopped():
            raise PlayerException("Cannot play shell-fm when in a stopped state.")

    def pause(self):

    def unpause(self):

    def stop(self):

    def next(self):
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.