mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-21 12:49:06 +00:00
* llm instructions * vibe dailyco * vibe dailyco * doc update (vibe) * dont show recording ui on call * stub processor (vibe) * stub processor (vibe) self-review * stub processor (vibe) self-review * chore(main): release 0.14.0 (#670) * Add multitrack pipeline * Mixdown audio tracks * Mixdown with pyav filter graph * Trigger multitrack processing for daily recordings * apply platform from envs in priority: non-dry * Use explicit track keys for processing * Align tracks of a multitrack recording * Generate waveforms for the mixed audio * Emit multriack pipeline events * Fix multitrack pipeline track alignment * dailico docs * Enable multitrack reprocessing * modal temp files uniform names, cleanup. remove llm temporary docs * docs cleanup * dont proceed with raw recordings if any of the downloads fail * dry transcription pipelines * remove is_miltitrack * comments * explicit dailyco room name * docs * remove stub data/method * frontend daily/whereby code self-review (no-mistake) * frontend daily/whereby code self-review (no-mistakes) * frontend daily/whereby code self-review (no-mistakes) * consent cleanup for multitrack (no-mistakes) * llm fun * remove extra comments * fix tests * merge migrations * Store participant names * Get participants by meeting session id * pop back main branch migration * s3 paddington (no-mistakes) * comment * pr comments * pr comments * pr comments * platform / meeting cleanup * Use participant names in summary generation * platform assignment to meeting at controller level * pr comment * room playform properly default none * room playform properly default none * restore migration lost * streaming WIP * extract storage / use common storage / proper env vars for storage * fix mocks tests * remove fall back * streaming for multifile * cenrtal storage abstraction (no-mistakes) * remove dead code / vars * Set participant user id for authenticated users * whereby recording name parsing fix * whereby recording name parsing fix * more file stream * storage dry + tests * remove homemade boto3 streaming and use proper boto * update migration guide * webhook creation script - print uuid --------- Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com> Co-authored-by: Mathieu Virbel <mat@meltingrocks.com> Co-authored-by: Sergey Mankovsky <sergey@monadical.com>
63 lines
2.3 KiB
Python
63 lines
2.3 KiB
Python
from typing import Optional
|
|
|
|
from reflector.settings import settings
|
|
from reflector.storage import get_dailyco_storage, get_whereby_storage
|
|
|
|
from ..schemas.platform import WHEREBY_PLATFORM, Platform
|
|
from .base import VideoPlatformClient, VideoPlatformConfig
|
|
from .registry import get_platform_client
|
|
|
|
|
|
def get_platform_config(platform: Platform) -> VideoPlatformConfig:
|
|
if platform == WHEREBY_PLATFORM:
|
|
if not settings.WHEREBY_API_KEY:
|
|
raise ValueError(
|
|
"WHEREBY_API_KEY is required when platform='whereby'. "
|
|
"Set WHEREBY_API_KEY environment variable."
|
|
)
|
|
whereby_storage = get_whereby_storage()
|
|
key_id, secret = whereby_storage.key_credentials
|
|
return VideoPlatformConfig(
|
|
api_key=settings.WHEREBY_API_KEY,
|
|
webhook_secret=settings.WHEREBY_WEBHOOK_SECRET or "",
|
|
api_url=settings.WHEREBY_API_URL,
|
|
s3_bucket=whereby_storage.bucket_name,
|
|
s3_region=whereby_storage.region,
|
|
aws_access_key_id=key_id,
|
|
aws_access_key_secret=secret,
|
|
)
|
|
elif platform == "daily":
|
|
if not settings.DAILY_API_KEY:
|
|
raise ValueError(
|
|
"DAILY_API_KEY is required when platform='daily'. "
|
|
"Set DAILY_API_KEY environment variable."
|
|
)
|
|
if not settings.DAILY_SUBDOMAIN:
|
|
raise ValueError(
|
|
"DAILY_SUBDOMAIN is required when platform='daily'. "
|
|
"Set DAILY_SUBDOMAIN environment variable."
|
|
)
|
|
daily_storage = get_dailyco_storage()
|
|
return VideoPlatformConfig(
|
|
api_key=settings.DAILY_API_KEY,
|
|
webhook_secret=settings.DAILY_WEBHOOK_SECRET or "",
|
|
subdomain=settings.DAILY_SUBDOMAIN,
|
|
s3_bucket=daily_storage.bucket_name,
|
|
s3_region=daily_storage.region,
|
|
aws_role_arn=daily_storage.role_credential,
|
|
)
|
|
else:
|
|
raise ValueError(f"Unknown platform: {platform}")
|
|
|
|
|
|
def create_platform_client(platform: Platform) -> VideoPlatformClient:
|
|
config = get_platform_config(platform)
|
|
return get_platform_client(platform, config)
|
|
|
|
|
|
def get_platform(room_platform: Optional[Platform] = None) -> Platform:
|
|
if room_platform:
|
|
return room_platform
|
|
|
|
return settings.DEFAULT_VIDEO_PLATFORM
|