diff --git a/server/entertainment_decider/extractors/media/youtube.py b/server/entertainment_decider/extractors/media/youtube.py index 2b03131..36ec525 100644 --- a/server/entertainment_decider/extractors/media/youtube.py +++ b/server/entertainment_decider/extractors/media/youtube.py @@ -9,6 +9,8 @@ from youtubesearchpython import ResultMode, Video from ...models import ( MediaElement, + MediaThumbnail, + thumbnail_sort_key, ) from ..generic import ( AuthorExtractedData, @@ -99,6 +101,12 @@ class YoutubeMediaExtractor(MediaExtractor[YoutubeVideoData]): def _update_object_raw(self, object: MediaElement, data: YoutubeVideoData): object.title = f"{data['title']} - {data['channel']['name']}" + if data.get("thumbnails"): + best_thumb = min( + data["thumbnails"], + key=lambda thumb: thumbnail_sort_key(thumb["width"], thumb["height"]), + ) + object.thumbnail = MediaThumbnail.from_uri(best_thumb["url"]) object.release_date = datetime.strptime( data.get("uploadDate") or data["publishDate"], "%Y-%m-%d" )