from jellyfin.models import ( JellyfinMediaItem, JellyfinMediaType, JellyfinEpisodeMediaMetadata ) from jellyfin_apiclient_python import JellyfinClient from jellyfin.utils.playback import get_current_playback from jellyfin.utils.image import get_image_url def to_media_item( item: dict, client: JellyfinClient ) -> JellyfinMediaItem: """ Converts a Jellyfin episode media item dictionary to a JellyfinMediaItem. Args: item (dict): The Jellyfin episode media item dictionary. client (JellyfinClient): The Jellyfin client instance. Returns: JellyfinMediaItem: The converted JellyfinMediaItem model. """ item_id = item.get('Id') # Construct SxxExx name series_name = item.get('SeriesName') season_number = item.get('ParentIndexNumber') episode_number = item.get('IndexNumber') name = f"{series_name} S{season_number:02}E{episode_number:02}" # Get TV show ID (for image) season = client.jellyfin.get_item(item.get('ParentId')) show_id = season.get('ParentId') # Construct metadata metadata = JellyfinEpisodeMediaMetadata( subtitle=item.get('Name'), ) # Get playback positions (start, end) = get_current_playback(item) return JellyfinMediaItem( id=item_id, name=name, type=JellyfinMediaType.EPISODE, image_url=get_image_url(show_id), start=start, end=end, metadata=metadata )