observer example added

This commit is contained in:
onyx-and-iris 2022-06-26 02:07:37 +01:00
parent aa15aed615
commit 12a8f7d603
2 changed files with 36 additions and 7 deletions

View File

@ -23,24 +23,24 @@ class Parser:
self.value = Combine(
Optional("-") + Word(nums) + Optional(".") + Optional(Word(nums))
) | Group(OneOrMore(Word(alphanums)))
def parse(self, cmds):
event = (
self.event = (
self.kls
+ self.token
+ self.param
+ Optional(self.token)
+ Optional(self.value)
)
def parse(self, cmds):
res = list()
for cmd in cmds:
if len(event.parseString(cmd)) == 2:
kls, param = event.parseString(cmd)
if len(self.event.parseString(cmd)) == 2:
kls, param = self.event.parseString(cmd)
target = getattr(self.vm, kls[0])[int(kls[-1])]
res.append(getattr(target, param))
elif len(event.parseString(cmd)) == 3:
kls, param, val = event.parseString(cmd)
elif len(self.event.parseString(cmd)) == 3:
kls, param, val = self.event.parseString(cmd)
target = getattr(self.vm, kls[0])[int(kls[-1])]
if "".join(val) in ["off", "on"]:
setattr(target, param, bool(["off", "on"].index("".join(val))))

View File

@ -0,0 +1,29 @@
import voicemeeterlib
class Observer:
def __init__(self, vm):
self.vm = vm
def on_update(self, subject):
print(subject)
def main():
with voicemeeterlib.api(kind_id) as vm:
obs = Observer(vm)
vm.subject.add(obs)
try:
while True:
cmd = input("Press Return to exit\n")
if not cmd:
break
except KeyboardInterrupt as e:
SystemExit(e)
if __name__ == "__main__":
kind_id = "banana"
main()