from datetime import datetime from typing import Optional, Tuple def get_current_playback(media: dict) -> Tuple[Optional[int], Optional[int]]: """ Extracts playback start and end positions from a Jellyfin media item dictionary. Args: media (dict): The Jellyfin media item dictionary. Returns: Tuple[Optional[int], Optional[int]]: A tuple containing the start and end positions in seconds, or (None, None) if the media is paused. """ play_state = media.get('PlayState', {}) is_paused = play_state.get('IsPaused', False) if is_paused: return (None, None) runtime_ticks = media.get('RunTimeTicks', -1) playback_position_ticks = play_state.get('PositionTicks', -1) if runtime_ticks < 0 or playback_position_ticks < 0: return (None, None) total_runtime_seconds = runtime_ticks // 10_000_000 playback_position_seconds = playback_position_ticks // 10_000_000 start = int(datetime.now().timestamp()) - playback_position_seconds end = start + total_runtime_seconds return (start, end)