from jellyfin.models import ( JellyfinMediaItem, JellyfinMediaType, JellyfinMusicMediaMetadata ) from jellyfin.utils.playback import get_current_playback from jellyfin.utils.image import get_image_url from datetime import datetime def to_media_item( item: dict ) -> JellyfinMediaItem: """ Converts a Jellyfin audio media item dictionary to a JellyfinMediaItem. Args: item (dict): The Jellyfin music media item dictionary. Returns: JellyfinMediaItem: The converted JellyfinMediaItem model. """ item_id = item.get('Id') # Get album ID (for image) album_id = item.get('ParentId') # Construct album title (with year if available) premiere_date = item.get('PremiereDate') premiere_year = None album = item.get('Album') if premiere_date: premiere_year = datetime.fromisoformat(premiere_date).year album = f"{album} ({premiere_year})" # Construct metadata metadata = JellyfinMusicMediaMetadata( artist=item.get('AlbumArtist'), album=album ) # Get playback positions (start, end) = get_current_playback(item) return JellyfinMediaItem( id=item_id, name=item.get('Name'), type=JellyfinMediaType.AUDIO, image_url=get_image_url(item_id), start=start, end=end, metadata=metadata )