Added Module for mocp (Music On Console Player)
This Module Displays the Status, Song, Artist and Time of the current song played or paused in mocp. Clicking the Modules toggles play/pause. I'm no programmer so alteration and feedback is welcome. Best regards, Chrugi
This commit is contained in:
parent
3e7f7334cf
commit
6fd168993f
1 changed files with 66 additions and 0 deletions
66
bumblebee/modules/mocp.py
Normal file
66
bumblebee/modules/mocp.py
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
# pylint: disable=C0111,R0903
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""Displays information about the current song in mocp.
|
||||||
|
|
||||||
|
Requires the following executable:
|
||||||
|
* mocp
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
* mocp.format: Format string for the song information. Tag values can be put in curly brackets (i.e. {artist})
|
||||||
|
"""
|
||||||
|
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
import string
|
||||||
|
|
||||||
|
import bumblebee.util
|
||||||
|
import bumblebee.input
|
||||||
|
import bumblebee.output
|
||||||
|
import bumblebee.engine
|
||||||
|
|
||||||
|
from bumblebee.output import scrollable
|
||||||
|
|
||||||
|
class Module(bumblebee.engine.Module):
|
||||||
|
def __init__(self, engine, config):
|
||||||
|
widgets = [
|
||||||
|
bumblebee.output.Widget(name="mocp.main", full_text=self.description),
|
||||||
|
]
|
||||||
|
super(Module, self).__init__(engine, config, widgets)
|
||||||
|
|
||||||
|
engine.input.register_callback(widgets[0], button=bumblebee.input.LEFT_MOUSE,
|
||||||
|
cmd="mocp -G")
|
||||||
|
|
||||||
|
#@scrollable
|
||||||
|
def description(self, widget):
|
||||||
|
if self._running == 1:
|
||||||
|
display = self._status + ": " + self._artist + " - " + self._title + " | " + self._position + "/" + self._duration
|
||||||
|
else:
|
||||||
|
display = "Music On Console Player"
|
||||||
|
return display
|
||||||
|
|
||||||
|
def update(self, widgets):
|
||||||
|
self._load_song()
|
||||||
|
|
||||||
|
def _load_song(self):
|
||||||
|
try:
|
||||||
|
info = bumblebee.util.execute("mocp -i")
|
||||||
|
for line in info.split("\n"):
|
||||||
|
if line.startswith("State:"):
|
||||||
|
self._status = line.split(": ", 2)[1]
|
||||||
|
if line.startswith("Artist:"):
|
||||||
|
self._artist = line.split(": ", 2)[1]
|
||||||
|
if line.startswith("Title:"):
|
||||||
|
self._title = line.split(": ", 2)[1]
|
||||||
|
self._title = self._title.split("(by ",2)[0]
|
||||||
|
if line.startswith("CurrentTime:"):
|
||||||
|
self._position = line.split(": ", 2)[1]
|
||||||
|
if line.startswith("TotalTime:"):
|
||||||
|
self._duration = line.split(": ", 2)[1]
|
||||||
|
self._running = 1
|
||||||
|
if line.startswith("State: STOP"):
|
||||||
|
self._running = 0
|
||||||
|
except RuntimeError:
|
||||||
|
self._running = 0
|
||||||
|
|
||||||
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
Loading…
Reference in a new issue