From e6f3ba4a683d5720408deb8e3df2c3fecf1ff367 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Fri, 10 Aug 2018 23:39:23 +0200 Subject: Initial --- inter.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 inter.py (limited to 'inter.py') diff --git a/inter.py b/inter.py new file mode 100644 index 0000000..109950d --- /dev/null +++ b/inter.py @@ -0,0 +1,47 @@ +from collections import namedtuple +import pacmd + +Sink = namedtuple("Sink", ["name", "description", "index", "state", "muted"]) +SinkInput = namedtuple("SinkInput", ["name", "driver", "sink"]) + +def list_sinks(): + res = pacmd.list_sinks() + assert len(res.sections) == 1 + assert res.sections[0].name == "sink" + + ret = [] + for item in res.sections[0].items: + muted = item.children["muted"].value + if type(muted) == str: + if muted == "yes": muted = True + elif muted == "no": muted = False + else: assert False + + sink = Sink( + item.children["name"].value, + item.children["properties"].children["device.description"].value, + item.index, + item.children["state"].value, + muted) + ret.append(sink) + + return ret + +def list_sink_inputs(): + res = pacmd.list_sink_inputs() + assert len(res.sections) == 1 + assert res.sections[0].name == "input" + + ret = [] + for item in res.sections[0].items: + name = item.children["properties"].children["media.name"].value + if "application.process.binary" in item.children["properties"].children: + name += " (" + item.children["properties"].children["application.process.binary"].value + ")" + + si = SinkInput( + name, + item.children["driver"].value, + int(item.children["sink"].value.split()[0])) + ret.append(si) + + return ret -- cgit v1.2.3-54-g00ecf