diff options
| author | dirkf <fieldhouse@gmx.net> | 2024-01-15 18:38:43 +0000 | 
|---|---|---|
| committer | dirkf <fieldhouse@gmx.net> | 2024-01-22 11:10:34 +0000 | 
| commit | dc512e3a8a26a8e3fc7f1f67e5ee5e7699db8659 (patch) | |
| tree | 80a879aff465d73377c747d3cb0cff73d56b599f | |
| parent | f8b0135850f39609f72002f5426883859579fc51 (diff) | |
[YouTube] Fix `like_count` extraction using `likeButtonViewModel`
* also fix various tests
* TODO: check against yt-dlp tests
| -rw-r--r-- | test/test_subtitles.py | 1 | ||||
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 18 | 
2 files changed, 15 insertions, 4 deletions
diff --git a/test/test_subtitles.py b/test/test_subtitles.py index 1197721ff..e005c78fc 100644 --- a/test/test_subtitles.py +++ b/test/test_subtitles.py @@ -295,6 +295,7 @@ class TestNRKSubtitles(BaseTestSubtitles):      def test_allsubtitles(self):          self.DL.params['writesubtitles'] = True          self.DL.params['allsubtitles'] = True +        self.DL.params['format'] = 'best/bestvideo'          subtitles = self.getSubtitles()          self.assertEqual(set(subtitles.keys()), set(['nb-ttv']))          self.assertEqual(md5(subtitles['nb-ttv']), '67e06ff02d0deaf975e68f6cb8f6a149') diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index cd4b3ef60..db840fc45 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -39,6 +39,7 @@ from ..utils import (      mimetype2ext,      NO_DEFAULT,      parse_codecs, +    parse_count,      parse_duration,      parse_qs,      qualities, @@ -46,6 +47,7 @@ from ..utils import (      smuggle_url,      str_or_none,      str_to_int, +    T,      traverse_obj,      try_call,      try_get, @@ -1250,7 +1252,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):                  'title': 'IMG 3456',                  'description': '',                  'upload_date': '20170613', -                'uploader': 'ElevageOrVert', +                'uploader': "l'Or Vert asbl",                  'uploader_id': '@ElevageOrVert',              },              'params': { @@ -2474,6 +2476,14 @@ class YoutubeIE(YoutubeBaseInfoExtractor):                              'like_count': str_to_int(like_count),                              'dislike_count': str_to_int(dislike_count),                          }) +                    else: +                        info['like_count'] = traverse_obj(vpir, ( +                            'videoActions', 'menuRenderer', 'topLevelButtons', Ellipsis, +                            'segmentedLikeDislikeButtonViewModel', 'likeButtonViewModel', 'likeButtonViewModel', +                            'toggleButtonViewModel', 'toggleButtonViewModel', 'defaultButtonViewModel', +                            'buttonViewModel', (('title', ('accessibilityText', T(lambda s: s.split()), Ellipsis))), T(parse_count)), +                            get_all=False) +                  vsir = content.get('videoSecondaryInfoRenderer')                  if vsir:                      rows = try_get( @@ -2588,7 +2598,7 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor):          'playlist_mincount': 94,          'info_dict': {              'id': 'UCqj7Cz7revf5maW9g5pgNcg', -            'title': 'Igor Kleiner - Playlists', +            'title': r're:Igor Kleiner(?: Ph\.D\.)? - Playlists',              'description': 'md5:be97ee0f14ee314f1f002cf187166ee2',              'uploader': 'Igor Kleiner',              'uploader_id': '@IgorDataScience', @@ -2599,7 +2609,7 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor):          'playlist_mincount': 94,          'info_dict': {              'id': 'UCqj7Cz7revf5maW9g5pgNcg', -            'title': 'Igor Kleiner - Playlists', +            'title': r're:Igor Kleiner(?: Ph\.D\.)? - Playlists',              'description': 'md5:be97ee0f14ee314f1f002cf187166ee2',              'uploader': 'Igor Kleiner',              'uploader_id': '@IgorDataScience', @@ -2711,7 +2721,7 @@ class YoutubeTabIE(YoutubeBaseInfoExtractor):          'url': 'https://www.youtube.com/channel/UCKfVa3S1e4PHvxWcwyMMg8w/channels',          'info_dict': {              'id': 'UCKfVa3S1e4PHvxWcwyMMg8w', -            'title': 'lex will - Channels', +            'title': r're:lex will - (?:Home|Channels)',              'description': 'md5:2163c5d0ff54ed5f598d6a7e6211e488',              'uploader': 'lex will',              'uploader_id': '@lexwill718',  | 
