extract playback utils
This commit is contained in:
31
jellyfin/utils/playback.py
Normal file
31
jellyfin/utils/playback.py
Normal file
@@ -0,0 +1,31 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user