From 5ab5a6dd041d1ccf1cfa058c2b781e00c1e69463 Mon Sep 17 00:00:00 2001 From: kclauhk <78251477+kclauhk@users.noreply.github.com> Date: Fri, 6 Jun 2025 22:12:35 +0800 Subject: [PATCH] use _get_text and add test --- yt_dlp/extractor/youtube/_video.py | 38 ++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/yt_dlp/extractor/youtube/_video.py b/yt_dlp/extractor/youtube/_video.py index d79952969..6958933d6 100644 --- a/yt_dlp/extractor/youtube/_video.py +++ b/yt_dlp/extractor/youtube/_video.py @@ -1751,6 +1751,41 @@ class YoutubeIE(YoutubeBaseInfoExtractor): 'media_type': 'short', }, }, + { + 'url': 'https://www.youtube.com/watch?v=8047tcn3o5U', + 'info_dict': { + 'id': '8047tcn3o5U', + 'ext': 'mp4', + 'title': 'Rooting: Layering and Cuttings in Pots', + 'description': r're:^➤When making new plants,', + 'uploader': 'MiradasBiologicas in English', + 'uploader_id': '@Miradasbiologicas', + 'uploader_url': 'https://www.youtube.com/@Miradasbiologicas', + 'channel': 'MiradasBiologicas in English', + 'channel_id': 'UCNUwfzPMUFZYXOOCHaYnp7g', + 'channel_url': 'https://www.youtube.com/channel/UCNUwfzPMUFZYXOOCHaYnp7g', + 'channel_is_verified': True, + 'thumbnail': r're:https?://.+/.+\.(?:jpg|webp)', + 'playable_in_embed': False, + 'age_limit': 0, + 'duration': 601, + 'timestamp': 1699623740, + 'upload_date': '20231110', + 'availability': 'public', + 'live_status': 'not_live', + 'view_count': int, + 'like_count': int, + 'comment_count': int, + 'channel_follower_count': int, + 'categories': ['Howto & Style'], + 'tags': 'count:27', + 'media_type': 'video', + }, + 'params': { + 'extractor_args': {'youtube': {'lang': ['en']}}, + 'skip_download': True, + }, + }, ] _WEBPAGE_TESTS = [ @@ -4205,8 +4240,7 @@ def process_language(container, base_url, lang_code, sub_name, client_name, quer info['view_count'] = vc if self._preferred_lang: - info['title'] = traverse_obj( - vpir, ('title', 'runs', 0, 'text', {str}), default=info['title']) + info['title'] = self._get_text(vpir, 'title') or info['title'] vsir = get_first(contents, 'videoSecondaryInfoRenderer') if vsir: