Connect to Minifoxwq server-sent-events to trigger python and OBS actions
Watchfox only supports Python >= 3.12, and requires Minifoxwq >= 0.8.
It is advised to install this project in a new virtual environment, and to install using edit-mode so that future pulled changes are used directly without requiring reinstallation.
To install, clone this repo, (load your env) and run python -m pip install -e .
.
To complete the configuration, edit config.toml
and include your OBS
websocket server password under the [connection]
section. The password can
be found in OBS -> Tools -> WebSocket Server Settings -> Show Connect Info
(also make sure that the websocket server is enabled).
When using the default CLI, any field under the [watchfox]
section will
become available in the event callbacks (see the example files); you can use
use this to set up your own configuration data, e.g., this is where you would
put your foxwq username to determine which color you are playing.
The OBSManager uses websockets to interface with the OBS instance. Many interactions are possible; it is possible to read OBS settings, set OBS settings, and even listen for OBS events.
However, for now, only few operations are implemented (e.g., media controls and filter controls), based on my direct needs. Feel free to open a github issue to propose and request obs-related functionalities that are not yet implemented.
Watchfox also provides some functionality for playing audio clips directly (without interacting with OBS). This can be used for tts-like applications; for now, there is a demo that reads out loud the moves as they are being played.
As above, feel free to open a github issue to propose and request audio-related functionalities that are not yet implemented.
Check out the example files. These can be taken as templates to implement your own actions based on the server-sent-event stream.
example-default-cli.py
contains a template for getting started using the
default watchfox CLI. The watchfox CLI provides subcommands to record and
replay Minifoxwq server-sent-events, and to run the full application.
The default CLI is useful to set up certain things automatically, and it allows to record Minifoxwq events and replay them later which can help develop your actions. However, it is optional, and you can use any main script or CLI framework you want, as long as you set up certain things manually.
example-custom-cli.py
contains a template for getting started without using
the default watchfox CLI. In this case, you will have to set up the event
stream, the obs instance, and any relevant configuration that you want to
become available in the callbacks yourself.
example-move-tts.py
contains a demo that employs TTS to verbalize the moves
obtained by the server-sent-event stream. Before running it, you must first
generate the audio files by running make-audio-fox.py
or make-audio-ogs.py
depending on which coordinate system you want to use (this will take a few
minutes).