Compare commits

..

2 Commits

Author SHA1 Message Date
Igor Loskutov
cf377c7d41 recording end time: 3h min 2025-12-19 18:35:16 -05:00
Igor Loskutov
e5ab76de88 increate daily recording max duration 2025-12-18 15:27:51 -05:00
4 changed files with 17 additions and 15 deletions

View File

@@ -1,20 +1,5 @@
# Changelog # Changelog
## [0.24.0](https://github.com/Monadical-SAS/reflector/compare/v0.23.2...v0.24.0) (2025-12-18)
### Features
* identify action items ([#790](https://github.com/Monadical-SAS/reflector/issues/790)) ([964cd78](https://github.com/Monadical-SAS/reflector/commit/964cd78bb699d83d012ae4b8c96565df25b90a5d))
### Bug Fixes
* automatically reprocess daily recordings ([#797](https://github.com/Monadical-SAS/reflector/issues/797)) ([5f458aa](https://github.com/Monadical-SAS/reflector/commit/5f458aa4a7ec3d00ca5ec49d62fcc8ad232b138e))
* daily video optimisation ([#789](https://github.com/Monadical-SAS/reflector/issues/789)) ([16284e1](https://github.com/Monadical-SAS/reflector/commit/16284e1ac3faede2b74f0d91b50c0b5612af2c35))
* main menu login ([#800](https://github.com/Monadical-SAS/reflector/issues/800)) ([0bc971b](https://github.com/Monadical-SAS/reflector/commit/0bc971ba966a52d719c8c240b47dc7b3bdea4391))
* retry on workflow timeout ([#798](https://github.com/Monadical-SAS/reflector/issues/798)) ([5f7dfad](https://github.com/Monadical-SAS/reflector/commit/5f7dfadabd3e8017406ad3720ba495a59963ee34))
## [0.23.2](https://github.com/Monadical-SAS/reflector/compare/v0.23.1...v0.23.2) (2025-12-11) ## [0.23.2](https://github.com/Monadical-SAS/reflector/compare/v0.23.1...v0.23.2) (2025-12-11)

View File

@@ -91,6 +91,10 @@ class MeetingTokenProperties(BaseModel):
start_cloud_recording: bool = Field( start_cloud_recording: bool = Field(
default=False, description="Automatically start cloud recording on join" default=False, description="Automatically start cloud recording on join"
) )
start_cloud_recording_opts: dict | None = Field(
default=None,
description="Options for startRecording when start_cloud_recording is true (e.g., maxDuration)",
)
enable_recording_ui: bool = Field( enable_recording_ui: bool = Field(
default=True, description="Show recording controls in UI" default=True, description="Show recording controls in UI"
) )

View File

@@ -181,11 +181,17 @@ class DailyClient(VideoPlatformClient):
enable_recording_ui: bool, enable_recording_ui: bool,
user_id: NonEmptyString | None = None, user_id: NonEmptyString | None = None,
is_owner: bool = False, is_owner: bool = False,
max_recording_duration_seconds: int | None = None,
) -> NonEmptyString: ) -> NonEmptyString:
start_cloud_recording_opts = None
if start_cloud_recording and max_recording_duration_seconds:
start_cloud_recording_opts = {"maxDuration": max_recording_duration_seconds}
properties = MeetingTokenProperties( properties = MeetingTokenProperties(
room_name=room_name, room_name=room_name,
user_id=user_id, user_id=user_id,
start_cloud_recording=start_cloud_recording, start_cloud_recording=start_cloud_recording,
start_cloud_recording_opts=start_cloud_recording_opts,
enable_recording_ui=enable_recording_ui, enable_recording_ui=enable_recording_ui,
is_owner=is_owner, is_owner=is_owner,
) )

View File

@@ -567,12 +567,19 @@ async def rooms_join_meeting(
if meeting.platform == "daily" and user_id is not None: if meeting.platform == "daily" and user_id is not None:
client = create_platform_client(meeting.platform) client = create_platform_client(meeting.platform)
end_date = meeting.end_date
if end_date.tzinfo is None:
end_date = end_date.replace(tzinfo=timezone.utc)
remaining_seconds = min(
3 * 60 * 60, int((end_date - current_time).total_seconds())
)
token = await client.create_meeting_token( token = await client.create_meeting_token(
meeting.room_name, meeting.room_name,
start_cloud_recording=meeting.recording_type == "cloud", start_cloud_recording=meeting.recording_type == "cloud",
enable_recording_ui=meeting.recording_type == "local", enable_recording_ui=meeting.recording_type == "local",
user_id=user_id, user_id=user_id,
is_owner=user_id == room.user_id, is_owner=user_id == room.user_id,
max_recording_duration_seconds=remaining_seconds,
) )
meeting = meeting.model_copy() meeting = meeting.model_copy()
meeting.room_url = add_query_param(meeting.room_url, "t", token) meeting.room_url = add_query_param(meeting.room_url, "t", token)