extract playback utils
This commit is contained in:
@@ -7,7 +7,7 @@ from jellyfin.models import (
|
||||
JellyfinMovieMediaMetadata,
|
||||
JellyfinEpisodeMediaMetadata)
|
||||
from jellyfin.utils.config import configure_client
|
||||
from datetime import datetime
|
||||
from jellyfin.utils.playback import get_current_playback
|
||||
from typing import Optional, Tuple
|
||||
import logging
|
||||
import time
|
||||
@@ -109,33 +109,6 @@ class JellyfinApiClient:
|
||||
elif media_type == 'Movie':
|
||||
return self.to_movie_model(item)
|
||||
|
||||
def get_playback_info(
|
||||
self, media: dict) -> Tuple[Optional[int], Optional[int]]:
|
||||
"""
|
||||
Extracts playback start and end timestamps from a media item.
|
||||
|
||||
Args:
|
||||
media (dict): The Jellyfin media item dictionary.
|
||||
Returns:
|
||||
Tuple[Optional[int], Optional[int]]: A tuple containing the start and end timestamps in seconds, or (None, None) if the media is paused.
|
||||
"""
|
||||
play_state = media.get('PlayState')
|
||||
is_paused = play_state.get('IsPaused')
|
||||
|
||||
if is_paused:
|
||||
return (None, None)
|
||||
|
||||
runtime_ticks = media.get('RunTimeTicks')
|
||||
total_runtime_seconds = runtime_ticks // 10_000_000
|
||||
|
||||
playback_position_ticks = play_state.get('PositionTicks')
|
||||
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)
|
||||
|
||||
def to_music_model(self, item: dict) -> JellyfinMediaItem:
|
||||
"""
|
||||
Converts a Jellyfin music media item dictionary to a JellyfinMediaItem model.
|
||||
@@ -155,7 +128,7 @@ class JellyfinApiClient:
|
||||
artist=item.get('AlbumArtist'), album=f"{
|
||||
item.get('Album')} ({premiere_year})" if premiere_date else item.get('Album'))
|
||||
|
||||
(start, end) = self.get_playback_info(item)
|
||||
(start, end) = get_current_playback(item)
|
||||
|
||||
return JellyfinMediaItem(
|
||||
id=media_id,
|
||||
@@ -182,7 +155,7 @@ class JellyfinApiClient:
|
||||
metadata = JellyfinMovieMediaMetadata(date=datetime.fromisoformat(
|
||||
premiere_date).strftime('%d/%m/%Y') if premiere_date else None)
|
||||
|
||||
(start, end) = self.get_playback_info(item)
|
||||
(start, end) = get_current_playback(item)
|
||||
|
||||
return JellyfinMediaItem(
|
||||
id=media_id,
|
||||
@@ -217,7 +190,7 @@ class JellyfinApiClient:
|
||||
subtitle=item.get('Name')
|
||||
)
|
||||
|
||||
(start, end) = self.get_playback_info(item)
|
||||
(start, end) = get_current_playback(item)
|
||||
|
||||
return JellyfinMediaItem(
|
||||
id=media_id,
|
||||
|
||||
Reference in New Issue
Block a user