convert virtualcam commands

This commit is contained in:
onyx-and-iris 2025-07-24 04:09:49 +01:00
parent 506aff833c
commit 2ef89be184
2 changed files with 26 additions and 20 deletions

View File

@ -38,6 +38,7 @@ for sub_app in (
'stream', 'stream',
'studiomode', 'studiomode',
'text', 'text',
'virtualcam',
): ):
module = importlib.import_module(f'.{sub_app}', package=__package__) module = importlib.import_module(f'.{sub_app}', package=__package__)
app.command(module.app) app.command(module.app)

View File

@ -1,46 +1,51 @@
"""module containing commands for manipulating virtual camera in OBS.""" """module containing commands for manipulating virtual camera in OBS."""
import typer from typing import Annotated
from cyclopts import App, Parameter
from . import console from . import console
from .alias import SubTyperAliasGroup from .context import Context
app = typer.Typer(cls=SubTyperAliasGroup) app = App(name='virtualcam', help='Commands for controlling the virtual camera in OBS.')
@app.callback() @app.command(name=['start', 's'])
def main(): def start(
"""Control virtual camera in OBS.""" ctx: Annotated[Context, Parameter(parse=False)],
):
@app.command('start | s')
def start(ctx: typer.Context):
"""Start the virtual camera.""" """Start the virtual camera."""
ctx.obj['obsws'].start_virtual_cam() ctx.client.start_virtual_cam()
console.out.print('Virtual camera started.') console.out.print('Virtual camera started.')
@app.command('stop | p') @app.command(name=['stop', 'p'])
def stop(ctx: typer.Context): def stop(
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Stop the virtual camera.""" """Stop the virtual camera."""
ctx.obj['obsws'].stop_virtual_cam() ctx.client.stop_virtual_cam()
console.out.print('Virtual camera stopped.') console.out.print('Virtual camera stopped.')
@app.command('toggle | tg') @app.command(name=['toggle', 'tg'])
def toggle(ctx: typer.Context): def toggle(
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Toggle the virtual camera.""" """Toggle the virtual camera."""
resp = ctx.obj['obsws'].toggle_virtual_cam() resp = ctx.client.toggle_virtual_cam()
if resp.output_active: if resp.output_active:
console.out.print('Virtual camera is enabled.') console.out.print('Virtual camera is enabled.')
else: else:
console.out.print('Virtual camera is disabled.') console.out.print('Virtual camera is disabled.')
@app.command('status | ss') @app.command(name=['status', 'ss'])
def status(ctx: typer.Context): def status(
ctx: Annotated[Context, Parameter(parse=False)],
):
"""Get the status of the virtual camera.""" """Get the status of the virtual camera."""
resp = ctx.obj['obsws'].get_virtual_cam_status() resp = ctx.client.get_virtual_cam_status()
if resp.output_active: if resp.output_active:
console.out.print('Virtual camera is enabled.') console.out.print('Virtual camera is enabled.')
else: else: