Browse Source

[YouTube] Fix playlist thumbnail extraction

Thx seproDev, yt-dlp/yt-dlp#11615
dirkf 3 weeks ago
parent
commit
aeb1254fcf
1 changed files with 17 additions and 7 deletions
  1. 17 7
      youtube_dl/extractor/youtube.py

+ 17 - 7
youtube_dl/extractor/youtube.py

@@ -3664,15 +3664,25 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor):
                 'Unsupported lockup view model content type "{0}"{1}'.format(content_type, bug_reports_message()),
                 only_once=True)
             return
+
         thumb_keys = ('contentImage',) + thumb_keys + ('thumbnailViewModel', 'image')
+
         return merge_dicts(self.url_result(
-            url, ie=ie.ie_key(), video_id=content_id), {
-                'title': traverse_obj(view_model, (
-                    'metadata', 'lockupMetadataViewModel', 'title',
-                    'content', T(compat_str))),
-                'thumbnails': self._extract_thumbnails(
-                    view_model, thumb_keys, final_key='sources'),
-        })
+            url, ie=ie.ie_key(), video_id=content_id),
+            traverse_obj(view_model, {
+                'title': ('metadata', 'lockupMetadataViewModel', 'title',
+                          'content', T(compat_str)),
+                'thumbnails': T(lambda vm: self._extract_thumbnails(
+                    vm, thumb_keys, final_key='sources')),
+                'duration': (
+                    'contentImage', 'thumbnailViewModel', 'overlays',
+                    Ellipsis, (
+                        ('thumbnailBottomOverlayViewModel', 'badges'),
+                        ('thumbnailOverlayBadgeViewModel', 'thumbnailBadges')
+                    ), Ellipsis, 'thumbnailBadgeViewModel', 'text',
+                    T(parse_duration), any),
+            })
+        )
 
     def _extract_shorts_lockup_view_model(self, view_model):
         content_id = traverse_obj(view_model, (