add .env support

This commit is contained in:
pstruebi
2025-08-19 13:54:35 +02:00
parent 4252a394e1
commit e2187df572
4 changed files with 43 additions and 3 deletions

1
.gitignore vendored
View File

@@ -41,3 +41,4 @@ wg_config/wg_confs/
records/
src/auracast/server/stream_settings.json
src/auracast/server/certs/per_device/
src/auracast/.env

17
poetry.lock generated
View File

@@ -2235,6 +2235,21 @@ files = [
[package.dependencies]
six = ">=1.5"
[[package]]
name = "python-dotenv"
version = "1.1.1"
description = "Read key-value pairs from a .env file and set them as environment variables"
optional = false
python-versions = ">=3.9"
groups = ["main"]
files = [
{file = "python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc"},
{file = "python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab"},
]
[package.extras]
cli = ["click (>=5.0)"]
[[package]]
name = "pytz"
version = "2025.2"
@@ -2919,4 +2934,4 @@ test = ["pytest", "pytest-asyncio"]
[metadata]
lock-version = "2.1"
python-versions = ">=3.11"
content-hash = "ee5d8e347947d5b3651aa1b9bcfb8b952e706d0a4a7d28bc0a9d3e5526d82c16"
content-hash = "723981c612b424756f0338604c35c9cef37fd44ffd208e15c7865b1f5e83bc05"

View File

@@ -14,7 +14,8 @@ dependencies = [
"numpy (>=2.2.6,<3.0.0)",
"streamlit (>=1.45.1,<2.0.0)",
"aiortc (>=1.13.0,<2.0.0)",
"sounddevice (>=0.5.2,<0.6.0)"
"sounddevice (>=0.5.2,<0.6.0)",
"python-dotenv (>=1.1.1,<2.0.0)"
]
[project.optional-dependencies]

View File

@@ -1,5 +1,6 @@
import logging
import os
from dotenv import load_dotenv
from auracast import multicast
from auracast import auracast_config
from auracast.utils.sounddevice_utils import list_usb_pw_inputs, list_network_pw_inputs
@@ -12,6 +13,8 @@ if __name__ == "__main__":
format='%(module)s.py:%(lineno)d %(levelname)s: %(message)s'
)
os.chdir(os.path.dirname(__file__))
# Load .env located next to this script (only uppercase keys will be referenced)
load_dotenv(dotenv_path='.env')
# Minimal setting to request PipeWire quantum ~128 at 48 kHz via PortAudio
os.environ.setdefault("AURACAST_SD_BLOCKSIZE", "128")
@@ -28,7 +31,18 @@ if __name__ == "__main__":
for i, d in aes67_inputs:
logging.info(f"{i}: {d['name']} in={d['max_input_channels']}")
input_sel = usb_inputs[0][0]
# Input selection (usb | network). Default to usb.
input_mode = (os.environ.get('INPUT', 'usb') or 'usb').lower()
if input_mode == 'network':
if aes67_inputs:
input_sel = aes67_inputs[0][0]
else:
raise RuntimeError("No audio inputs found (USB or network).")
else:
if usb_inputs:
input_sel = usb_inputs[0][0]
else:
raise RuntimeError("No audio inputs found (USB or network).")
TRANSPORT1 = 'serial:/dev/ttyAMA3,1000000,rtscts' # transport for raspberry pi gpio header
TRANSPORT2 = 'serial:/dev/ttyAMA4,1000000,rtscts' # transport for raspberry pi gpio header
@@ -43,9 +57,18 @@ if __name__ == "__main__":
except Exception:
pass
# Read uppercase-only settings from environment/.env
broadcast_name = os.environ.get('BROADCAST_NAME', 'Broadcast0')
program_info = os.environ.get('PROGRAM_INFO', 'Some Announcements')
# Note: 'LANGUATE' (typo) is intentionally used as requested, maps to config.language
language = os.environ.get('LANGUATE', 'deu')
config = auracast_config.AuracastConfigGroup(
bigs = [
auracast_config.AuracastBigConfig(
name=broadcast_name,
program_info=program_info,
language=language,
iso_que_len=1,
audio_source=f'device:{input_sel}',
input_format=f"int16le,{CAPTURE_SRATE},1",