mirror of
https://github.com/onyx-and-iris/vmr-http.git
synced 2026-04-07 02:13:31 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a82cbd2bc6 | |||
| 6d01b8d2d3 | |||
| d20fb52d4b | |||
| 6ef9be7a61 |
22
README.md
22
README.md
@@ -14,7 +14,7 @@ pip install vmr-http
|
||||
## Run
|
||||
|
||||
```console
|
||||
uvicorn vmr_http.app:app
|
||||
uvicorn vmr_http:app
|
||||
```
|
||||
|
||||
## Use
|
||||
@@ -66,6 +66,26 @@ curl -X 'GET' \
|
||||
-H 'accept: application/json'
|
||||
```
|
||||
|
||||
*Set Bus 2 Mode*
|
||||
|
||||
```console
|
||||
curl -X 'PATCH' \
|
||||
'http://127.0.0.1:8000/bus/2/mode' \
|
||||
-H 'accept: application/json' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"mode": "Composite"
|
||||
}'
|
||||
```
|
||||
|
||||
*Healthcheck*
|
||||
|
||||
```console
|
||||
curl -X 'GET' \
|
||||
'http://127.0.0.1:8000/health' \
|
||||
-H 'accept: application/json'
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
FastAPI [generates automatic docs][auto-docs], visit the link in the startup message when you launch the server.
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
[project]
|
||||
name = "vmr-http"
|
||||
version = "0.3.0"
|
||||
version = "0.3.3"
|
||||
description = "HTTP API for controlling Voicemeeter"
|
||||
readme = "README.md"
|
||||
authors = [{ name = "onyx-and-iris", email = "code@onyxandiris.online" }]
|
||||
requires-python = ">=3.10"
|
||||
dependencies = [
|
||||
"fastapi>=0.135.3",
|
||||
"uvicorn>=0.43.0",
|
||||
"voicemeeter-api>=2.7.2",
|
||||
]
|
||||
dependencies = ["fastapi>=0.135.3", "uvicorn>=0.43.0", "voicemeeter-api>=2.7.2"]
|
||||
classifiers = [
|
||||
"Development Status :: 4 - Beta",
|
||||
"Programming Language :: Python",
|
||||
@@ -26,14 +22,10 @@ requires = ["uv_build>=0.11.3,<0.12.0"]
|
||||
build-backend = "uv_build"
|
||||
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"fastapi[standard]>=0.135.3",
|
||||
"poethepoet>=0.43.0",
|
||||
"ruff>=0.15.9",
|
||||
]
|
||||
dev = ["fastapi[standard]>=0.135.3", "poethepoet>=0.43.0", "ruff>=0.15.9"]
|
||||
|
||||
[tool.fastapi]
|
||||
entrypoint = "vmr_http.app:app"
|
||||
entrypoint = "vmr_http:app"
|
||||
|
||||
[tool.uv.sources]
|
||||
voicemeeter-api = { path = "../voicemeeter-api-python", editable = true }
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
"""Voicemeeter HTTP API."""
|
||||
|
||||
from .app import app
|
||||
|
||||
__all__ = ['app']
|
||||
|
||||
@@ -33,3 +33,10 @@ async def get_gain(index: int, voicemeeter=Depends(get_voicemeeter_client)):
|
||||
async def get_mute(index: int, voicemeeter=Depends(get_voicemeeter_client)):
|
||||
"""Get the current mute status for the specified bus index."""
|
||||
return {'mute': voicemeeter.bus[index].mute}
|
||||
|
||||
|
||||
@router.get('/{index}/mono', tags=['bus'])
|
||||
async def get_mono(index: int, voicemeeter=Depends(get_voicemeeter_client)):
|
||||
"""Get the current mono status for the specified bus index."""
|
||||
opts = ['Off', 'On', 'Stereo Reverse']
|
||||
return {'mono': opts[voicemeeter.bus[index].mono]}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"""module for bus mode related endpoints."""
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from fastapi import APIRouter, Body, Depends, HTTPException
|
||||
|
||||
from vmr_http.dependencies import get_voicemeeter_client
|
||||
|
||||
@@ -25,7 +25,7 @@ _reversed_busmodes = {v: k for k, v in _readable_busmodes.items()}
|
||||
|
||||
@router.patch('/{index}/mode')
|
||||
@router.put('/{index}/mode')
|
||||
async def update_bus_mode(index: int, mode: str, voicemeeter=Depends(get_voicemeeter_client)):
|
||||
async def update_bus_mode(index: int, mode: str = Body(..., embed=True), voicemeeter=Depends(get_voicemeeter_client)):
|
||||
"""Update the bus mode for the specified bus index."""
|
||||
if mode not in _reversed_busmodes:
|
||||
raise HTTPException(
|
||||
|
||||
Reference in New Issue
Block a user