mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29: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>
39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
import re
|
|
from datetime import datetime
|
|
|
|
from reflector.utils.datetime import parse_datetime_with_timezone
|
|
from reflector.utils.string import NonEmptyString, parse_non_empty_string
|
|
from reflector.video_platforms.base import ROOM_PREFIX_SEPARATOR
|
|
|
|
|
|
def parse_whereby_recording_filename(
|
|
object_key: NonEmptyString,
|
|
) -> (NonEmptyString, datetime):
|
|
filename = parse_non_empty_string(object_key.rsplit(".", 1)[0])
|
|
timestamp_pattern = r"(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z)"
|
|
match = re.search(timestamp_pattern, filename)
|
|
if not match:
|
|
raise ValueError(f"No ISO timestamp found in filename: {object_key}")
|
|
timestamp_str = match.group(1)
|
|
timestamp_start = match.start(1)
|
|
room_name_part = filename[:timestamp_start]
|
|
if room_name_part.endswith(ROOM_PREFIX_SEPARATOR):
|
|
room_name_part = room_name_part[: -len(ROOM_PREFIX_SEPARATOR)]
|
|
else:
|
|
raise ValueError(
|
|
f"room name {room_name_part} doesnt have {ROOM_PREFIX_SEPARATOR} at the end of filename: {object_key}"
|
|
)
|
|
|
|
return parse_non_empty_string(room_name_part), parse_datetime_with_timezone(
|
|
timestamp_str
|
|
)
|
|
|
|
|
|
def whereby_room_name_prefix(room_name_prefix: NonEmptyString) -> NonEmptyString:
|
|
return room_name_prefix + ROOM_PREFIX_SEPARATOR
|
|
|
|
|
|
# room name comes with "/" from whereby api but lacks "/" e.g. in recording filenames
|
|
def room_name_to_whereby_api_room_name(room_name: NonEmptyString) -> NonEmptyString:
|
|
return f"/{room_name}"
|