aboutsummaryrefslogtreecommitdiff
path: root/inter.py
diff options
context:
space:
mode:
Diffstat (limited to 'inter.py')
-rw-r--r--inter.py47
1 files changed, 47 insertions, 0 deletions
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