mirror of
				https://github.com/onyx-and-iris/voicemeeter-api-python.git
				synced 2025-11-04 15:41:48 +00:00 
			
		
		
		
	observer example added
This commit is contained in:
		
							parent
							
								
									aa15aed615
								
							
						
					
					
						commit
						12a8f7d603
					
				@ -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))))
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										29
									
								
								examples/observer/__main__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								examples/observer/__main__.py
									
									
									
									
									
										Normal 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()
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user