33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
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)
|