diff --git a/control/meta_mpd.py b/control/meta_mpd.py
index ce793ec3..c829ff2b 100755
--- a/control/meta_mpd.py
+++ b/control/meta_mpd.py
@@ -778,33 +778,30 @@ Usage: %(progname)s [OPTION]...
--mpd-host=ADDR Set the mpd server address
--mpd-port=PORT Set the TCP port
- --snapcast-host=ADDR Set the mpd server address
- --snapcast-port=PORT Set the TCP port
+ --snapcast-host=ADDR Set the snapcast server address
+ --snapcast-port=PORT Set the snapcast server port
--stream=ID Set the stream id
- --command=CMD Issue a command to MPD and exit
-d, --debug Run in debug mode
- -j, --use-journal Log to systemd journal instead of stderr
- -v, --version mpDris2 version
+ -v, --version meta_mpd version
-Report bugs to https://github.com/eonpatapon/mpDris2/issues""" % params)
+Report bugs to https://github.com/badaix/snapcast/issues""" % params)
if __name__ == '__main__':
DBusGMainLoop(set_as_default=True)
- gettext.bindtextdomain('mpDris2', '@datadir@/locale')
- gettext.textdomain('mpDris2')
+ gettext.bindtextdomain('meta_mpd', '@datadir@/locale')
+ gettext.textdomain('meta_mpd')
log_format_stderr = '%(asctime)s %(module)s %(levelname)s: %(message)s'
- log_journal = False
log_level = logging.INFO
# Parse command line
try:
(opts, args) = getopt.getopt(sys.argv[1:], 'hdjv',
- ['help', 'mpd-host=', 'mpd-port=', 'snapcast-host=', 'snapcast-port=', 'stream=', 'debug', 'use-journal', 'version'])
+ ['help', 'mpd-host=', 'mpd-port=', 'snapcast-host=', 'snapcast-port=', 'stream=', 'debug', 'version'])
except getopt.GetoptError as ex:
(msg, opt) = ex.args
print("%s: %s" % (sys.argv[0], msg), file=sys.stderr)
@@ -828,35 +825,24 @@ if __name__ == '__main__':
params['stream'] = arg
elif opt in ['-d', '--debug']:
log_level = logging.DEBUG
- elif opt in ['-j', '--use-journal']:
- log_journal = True
elif opt in ['-v', '--version']:
v = __version__
if __git_version__:
v = __git_version__
- print("mpDris2 version %s" % v)
+ print("meta_mpd version %s" % v)
sys.exit()
if len(args) > 2:
usage(params)
sys.exit()
- logger = logging.getLogger('mpDris2')
+ logger = logging.getLogger('meta_mpd')
logger.propagate = False
logger.setLevel(log_level)
- # Attempt to configure systemd journal logging, if enabled
- if log_journal:
- try:
- from systemd.journal import JournalHandler
- log_handler = JournalHandler(SYSLOG_IDENTIFIER='mpDris2')
- except ImportError:
- log_journal = False
-
- # Log to stderr if journal logging was not enabled, or if setup failed
- if not log_journal:
- log_handler = logging.StreamHandler()
- log_handler.setFormatter(logging.Formatter(log_format_stderr))
+ # Log to stderr
+ log_handler = logging.StreamHandler()
+ log_handler.setFormatter(logging.Formatter(log_format_stderr))
logger.addHandler(log_handler)
diff --git a/control/snapcast_mpris.py b/control/snapcast_mpris.py
index a83a6d1c..0f045bca 100755
--- a/control/snapcast_mpris.py
+++ b/control/snapcast_mpris.py
@@ -14,14 +14,19 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
-# Authors: Jean-Philippe Braun ,
+# Author: Johannes Pohl
+# Based on mpDris2 by
+# Jean-Philippe Braun ,
# Mantas Mikulėnas
-# Based on mpDris from: Erik Karlsson
-# Some bits taken from quodlibet mpris plugin by
+# Based on mpDris by:
+# Erik Karlsson
+# Some bits taken from quodlibet mpris plugin by:
+#
+# Dependencies:
+# - websocket-client
from time import sleep
-from systemd.journal import _valid_field_name
import websocket
import logging
import threading
@@ -43,11 +48,6 @@ __version__ = "@version@"
__git_version__ = "@gitversion@"
-try:
- import mutagen
-except ImportError:
- mutagen = None
-
try:
import gi
gi.require_version('Notify', '0.7')
@@ -578,7 +578,7 @@ class SnapcastWrapper(object):
# Try older name.
gsd_object = self._bus.get_object("org.gnome.SettingsDaemon",
"/org/gnome/SettingsDaemon/MediaKeys")
- gsd_object.GrabMediaPlayerKeys("mpDris2", 0,
+ gsd_object.GrabMediaPlayerKeys("snapcast_mpris", 0,
dbus_interface="org.gnome.SettingsDaemon.MediaKeys")
except:
logger.warning(
@@ -631,7 +631,8 @@ class NotifyWrapper(object):
logger.debug("Initializing GObject.Notify")
if Notify.init(identity):
notif = Notify.Notification()
- notif.set_hint("desktop-entry", GLib.Variant("s", "mpdris2"))
+ notif.set_hint("desktop-entry",
+ GLib.Variant("s", "snapcast_mpris"))
notif.set_hint("transient", GLib.Variant("b", True))
else:
logger.error(
@@ -640,7 +641,7 @@ class NotifyWrapper(object):
logger.debug("Initializing old pynotify")
if pynotify.init(identity):
notif = pynotify.Notification("", "", "")
- notif.set_hint("desktop-entry", "mpdris2")
+ notif.set_hint("desktop-entry", "snapcast_mpris")
notif.set_hint("transient", True)
else:
logger.error(
@@ -725,7 +726,7 @@ class MPRISInterface(dbus.service.Object):
__root_props = {
"CanQuit": (False, None),
"CanRaise": (True, None),
- "DesktopEntry": ("mpdris2", None),
+ "DesktopEntry": ("snapcast_mpris", None),
"HasTrackList": (False, None),
"Identity": (identity, None),
"SupportedUriSchemes": (dbus.Array(signature="s"), None),
@@ -996,18 +997,13 @@ def usage(params):
print("""\
Usage: %(progname)s [OPTION]...
- -c, --config=PATH Read a custom configuration file
-
-h, --host=ADDR Set the mpd server address
- --port=PORT Set the TCP port
+ -p, --port=PORT Set the TCP port
--client=ID Set the client id
-d, --debug Run in debug mode
- -j, --use-journal Log to systemd journal instead of stderr
- -v, --version mpDris2 version
+ -v, --version snapcast_mpris version
-Environment variables MPD_HOST and MPD_PORT can be used.
-
-Report bugs to https://github.com/eonpatapon/mpDris2/issues""" % params)
+Report bugs to https://github.com/badaix/snapcast/issues""" % params)
if __name__ == '__main__':
@@ -1015,23 +1011,21 @@ if __name__ == '__main__':
# TODO:
# -cleanup: remove mpd-ish stuff
- # -stream id: keep track of the client's stream
- gettext.bindtextdomain('mpDris2', '@datadir@/locale')
- gettext.textdomain('mpDris2')
+ # -use zeroconf to find the snapserver IP and port
+
+ gettext.bindtextdomain('snapcast_mpris', '@datadir@/locale')
+ gettext.textdomain('snapcast_mpris')
log_format_stderr = '%(asctime)s %(module)s %(levelname)s: %(message)s'
- log_journal = False
log_level = logging.INFO
- config_file = None
# Parse command line
try:
- (opts, args) = getopt.getopt(sys.argv[1:], 'c:dh:jp:v',
- ['help', 'bus-name=', 'config=',
+ (opts, args) = getopt.getopt(sys.argv[1:], 'dh:p:v',
+ ['help', 'bus-name=',
'debug', 'host=', 'client='
- 'use-journal', 'path=', 'port=',
- 'version'])
+ 'port=', 'version'])
except getopt.GetoptError as ex:
(msg, opt) = ex.args
print("%s: %s" % (sys.argv[0], msg), file=sys.stderr)
@@ -1045,15 +1039,11 @@ if __name__ == '__main__':
sys.exit()
elif opt in ['--bus-name']:
params['bus_name'] = arg
- elif opt in ['-c', '--config']:
- config_file = arg
elif opt in ['-d', '--debug']:
log_level = logging.DEBUG
elif opt in ['-h', '--host']:
params['host'] = arg
- elif opt in ['-j', '--use-journal']:
- log_journal = True
- elif opt in ['--port']:
+ elif opt in ['-p', '--port']:
params['port'] = int(arg)
elif opt in ['--client']:
params['client'] = int(arg)
@@ -1061,7 +1051,7 @@ if __name__ == '__main__':
v = __version__
if __git_version__:
v = __git_version__
- print("mpDris2 version %s" % v)
+ print("snapcast_mpris version %s" % v)
sys.exit()
if len(args) > 2:
@@ -1072,18 +1062,9 @@ if __name__ == '__main__':
logger.propagate = False
logger.setLevel(log_level)
- # Attempt to configure systemd journal logging, if enabled
- if log_journal:
- try:
- from systemd.journal import JournalHandler
- log_handler = JournalHandler(SYSLOG_IDENTIFIER='snapcast_mpris')
- except ImportError:
- log_journal = False
-
- # Log to stderr if journal logging was not enabled, or if setup failed
- if not log_journal:
- log_handler = logging.StreamHandler()
- log_handler.setFormatter(logging.Formatter(log_format_stderr))
+ # Log to stderr
+ log_handler = logging.StreamHandler()
+ log_handler.setFormatter(logging.Formatter(log_format_stderr))
logger.addHandler(log_handler)
@@ -1124,12 +1105,6 @@ if __name__ == '__main__':
logger.info(f'Client: {params["client"]}')
logger.debug(f'Parameters: {params}')
- if mutagen:
- logger.info('Using Mutagen to read covers from music files.')
- else:
- logger.info(
- 'Mutagen not available, covers in music files will be ignored.')
-
# Set up the main loop
if using_gi_glib:
logger.debug('Using GObject-Introspection main loop.')
@@ -1140,10 +1115,7 @@ if __name__ == '__main__':
# Wrapper to send notifications
notification = NotifyWrapper(params)
- # Create wrapper to handle connection failures with MPD more gracefully
- # wrapper = SnapcastRpcWebsocketWrapper("127.0.0.1", 1780, "id", any)
snapcast_wrapper = SnapcastWrapper(params)
- # mpd_wrapper.run()
# Run idle loop
try: