calculate start and end
This commit is contained in:
@@ -64,14 +64,33 @@ class JellyfinApiClient:
|
||||
|
||||
raise ValueError(f"Unsupported media type: {media_type}")
|
||||
|
||||
def get_playback_info(self, media: dict):
|
||||
media_id = media.get('Id')
|
||||
playback_info = self.client.jellyfin.get_userdata_for_item(media_id)
|
||||
|
||||
runtime_ticks = media.get('RunTimeTicks', 0)
|
||||
total_runtime_seconds = runtime_ticks // 10_000_000
|
||||
|
||||
playback_position_ticks = playback_info.get('PlaybackPositionTicks', 0)
|
||||
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:
|
||||
media_id = item.get('Id')
|
||||
|
||||
(start, end) = self.get_playback_info(item)
|
||||
|
||||
return JellyfinMediaItem(
|
||||
id=media_id,
|
||||
name=item.get('Name'),
|
||||
type=JellyfinMediaType.AUDIO,
|
||||
image_url=self.get_image_url(media_id),
|
||||
start=start,
|
||||
end=end,
|
||||
metadata={
|
||||
'artist': item.get('AlbumArtist'),
|
||||
}
|
||||
@@ -81,11 +100,15 @@ class JellyfinApiClient:
|
||||
media_id = item.get('Id')
|
||||
premiere_date = item.get('PremiereDate')
|
||||
|
||||
(start, end) = self.get_playback_info(item)
|
||||
|
||||
return JellyfinMediaItem(
|
||||
id=media_id,
|
||||
name=item.get('Name'),
|
||||
type=JellyfinMediaType.MOVIE,
|
||||
image_url=self.get_image_url(media_id),
|
||||
start=start,
|
||||
end=end,
|
||||
metadata={
|
||||
'date': datetime.fromisoformat(premiere_date).strftime('%d/%m/%Y') if premiere_date else None
|
||||
}
|
||||
@@ -99,11 +122,15 @@ class JellyfinApiClient:
|
||||
|
||||
subtitle=f"S{season_number:02}E{episode_number:02} of {seris_name}"
|
||||
|
||||
(start, end) = self.get_playback_info(item)
|
||||
|
||||
return JellyfinMediaItem(
|
||||
id=media_id,
|
||||
name=item.get('Name'),
|
||||
type=JellyfinMediaType.EPISODE,
|
||||
image_url=self.get_image_url(media_id),
|
||||
start=start,
|
||||
end=end,
|
||||
metadata={
|
||||
'subtitle': subtitle,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user