From fd2ad7cb245423e49db1be9d9654c7dd3103619a Mon Sep 17 00:00:00 2001 From: coletdev Date: Sun, 27 Mar 2022 18:20:25 +1300 Subject: [PATCH] [youtube:tab] Return shorts url if video is a short (#3168) Allows filtering out shorts from feeds with `--match-filter` Closes #3165 Authored-by: coletdjnz --- yt_dlp/extractor/youtube.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py index 8ee688798..0726e27b4 100644 --- a/yt_dlp/extractor/youtube.py +++ b/yt_dlp/extractor/youtube.py @@ -818,12 +818,17 @@ class YoutubeBaseInfoExtractor(InfoExtractor): renderer, ('thumbnailOverlays', ..., 'thumbnailOverlayTimeStatusRenderer', 'style'), get_all=False, expected_type=str) badges = self._extract_badges(renderer) thumbnails = self._extract_thumbnails(renderer, 'thumbnail') + navigation_url = urljoin('https://www.youtube.com/', traverse_obj( + renderer, ('navigationEndpoint', 'commandMetadata', 'webCommandMetadata', 'url'), expected_type=str)) + url = f'https://www.youtube.com/watch?v={video_id}' + if overlay_style == 'SHORTS' or (navigation_url and '/shorts/' in navigation_url): + url = f'https://www.youtube.com/shorts/{video_id}' return { '_type': 'url', 'ie_key': YoutubeIE.ie_key(), 'id': video_id, - 'url': f'https://www.youtube.com/watch?v={video_id}', + 'url': url, 'title': title, 'description': description, 'duration': duration,