modify logging config to filter out logs

script now ends when OBS is closed.
This commit is contained in:
onyx-and-iris 2023-06-23 17:44:51 +01:00
parent 1ee0fc5f06
commit b81c4c4b97
3 changed files with 48 additions and 13 deletions

View File

@ -17,8 +17,12 @@ port = 4455
password = "mystrongpass" password = "mystrongpass"
``` ```
Closing OBS will end the script.
## Notes ## Notes
In this example all but `voicemeeterlib.iremote` logs are filtered out. Log level set at DEBUG.
For a similar Streamlabs Desktop example: For a similar Streamlabs Desktop example:
[Streamlabs example](https://gist.github.com/onyx-and-iris/c864f07126eeae389b011dc49520a19b) [Streamlabs example](https://gist.github.com/onyx-and-iris/c864f07126eeae389b011dc49520a19b)

View File

@ -1,16 +1,43 @@
import logging import time
from logging import config
import obsws_python as obsws
import obsws_python as obs
import voicemeeterlib import voicemeeterlib
logging.basicConfig(level=logging.INFO) config.dictConfig(
{
"version": 1,
"formatters": {
"standard": {
"format": "%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s"
}
},
"handlers": {
"stream": {
"level": "DEBUG",
"class": "logging.StreamHandler",
"formatter": "standard",
}
},
"loggers": {
"voicemeeterlib.iremote": {"handlers": ["stream"], "level": "DEBUG"}
},
}
)
class Observer: class MyClient:
def __init__(self, vm): def __init__(self, vm):
self.vm = vm self.vm = vm
self.client = obs.EventClient() self.client = obsws.EventClient()
self.client.callback.register(self.on_current_program_scene_changed) self.client.callback.register(
(
self.on_current_program_scene_changed,
self.on_exit_started,
)
)
self.is_running = True
def on_start(self): def on_start(self):
self.vm.strip[0].mute = True self.vm.strip[0].mute = True
@ -52,14 +79,18 @@ class Observer:
if fn := fget(scene): if fn := fget(scene):
fn() fn()
def on_exit_started(self, _):
self.client.unsubscribe()
self.is_running = False
def main(): def main():
subs = {ev: False for ev in ["pdirty", "mdirty", "midi"]} KIND_ID = "potato"
with voicemeeterlib.api("potato", subs=subs) as vm:
obs = Observer(vm) with voicemeeterlib.api(KIND_ID) as vm:
while cmd := input("<Enter> to exit\n"): client = MyClient(vm)
if not cmd: while client.is_running:
break time.sleep(0.1)
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -3,5 +3,5 @@ from setuptools import setup
setup( setup(
name="obs", name="obs",
description="OBS Example", description="OBS Example",
install_requires=["voicemeeter-api", "obsws-python"], install_requires=["obsws-python"],
) )