feat: delay show rotation during live recording window
Decouple the like-window boundary (Wed 10pm ET) from when the system rotates to a new show. NTR_SHOW_ROTATION_DELAY_HOURS=2 keeps the previous week's show visible during the ~2 hour recording, then creates the new show at midnight. Made-with: Cursor
This commit is contained in:
@@ -36,3 +36,23 @@ def get_show_week(
|
||||
week_end_utc = (candidate + timedelta(days=7)).astimezone(timezone.utc).replace(tzinfo=timezone.utc)
|
||||
|
||||
return week_start_utc, week_end_utc
|
||||
|
||||
|
||||
def get_current_show_week(
|
||||
now_utc: datetime,
|
||||
show_day: int = SHOW_DAY_DEFAULT,
|
||||
show_hour: int = SHOW_HOUR_DEFAULT,
|
||||
rotation_delay_hours: float = 0,
|
||||
) -> tuple[datetime, datetime]:
|
||||
"""Return the show week that should be treated as "current" right now.
|
||||
|
||||
When *rotation_delay_hours* > 0 the switchover to a new show is postponed
|
||||
by that many hours after the like-window boundary. During the gap the
|
||||
previous week's show remains current so the host can view it while
|
||||
recording. Likes made during the gap are collected by the new show once
|
||||
it rotates in.
|
||||
"""
|
||||
if rotation_delay_hours <= 0:
|
||||
return get_show_week(now_utc, show_day, show_hour)
|
||||
effective_now = now_utc - timedelta(hours=rotation_delay_hours)
|
||||
return get_show_week(effective_now, show_day, show_hour)
|
||||
|
||||
Reference in New Issue
Block a user