diff options
author | pukkandan <pukkandan.ytdlp@gmail.com> | 2022-01-19 18:54:17 +0530 |
---|---|---|
committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2022-01-19 18:56:55 +0530 |
commit | b6ce9bb038d0f70b955dc096561901419a8d14e2 (patch) | |
tree | bbf4dc6d33a1135a91b22e9f2d433f06dee070d1 | |
parent | eea1b0358e8f6d0c41121b811df6d320f4b73673 (diff) | |
download | hypervideo-pre-b6ce9bb038d0f70b955dc096561901419a8d14e2.tar.lz hypervideo-pre-b6ce9bb038d0f70b955dc096561901419a8d14e2.tar.xz hypervideo-pre-b6ce9bb038d0f70b955dc096561901419a8d14e2.zip |
[youtube] Detect live-stream embeds
Closes #2380
-rw-r--r-- | yt_dlp/extractor/extractors.py | 1 | ||||
-rw-r--r-- | yt_dlp/extractor/youtube.py | 18 |
2 files changed, 18 insertions, 1 deletions
diff --git a/yt_dlp/extractor/extractors.py b/yt_dlp/extractor/extractors.py index 194fe4be3..09352310b 100644 --- a/yt_dlp/extractor/extractors.py +++ b/yt_dlp/extractor/extractors.py @@ -1965,6 +1965,7 @@ from .youtube import ( YoutubeFavouritesIE, YoutubeHistoryIE, YoutubeTabIE, + YoutubeLivestreamEmbedIE, YoutubePlaylistIE, YoutubeRecommendedIE, YoutubeSearchDateIE, diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py index 244115f48..451771d6b 100644 --- a/yt_dlp/extractor/youtube.py +++ b/yt_dlp/extractor/youtube.py @@ -864,7 +864,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): youtube\.googleapis\.com)/ # the various hostnames, with wildcard subdomains (?:.*?\#/)? # handle anchor (#/) redirect urls (?: # the various things that can precede the ID: - (?:(?:v|embed|e|shorts)/(?!videoseries)) # v/ or embed/ or e/ or shorts/ + (?:(?:v|embed|e|shorts)/(?!videoseries|live_stream)) # v/ or embed/ or e/ or shorts/ |(?: # or the v= param in all its forms (?:(?:watch|movie)(?:_popup)?(?:\.php)?/?)? # preceding watch(_popup|.php) or nothing (like /?v=xxxx) (?:\?|\#!?) # the params delimiter ? or # or #! @@ -5139,8 +5139,24 @@ class YoutubeYtBeIE(InfoExtractor): }), ie=YoutubeTabIE.ie_key(), video_id=playlist_id) +class YoutubeLivestreamEmbedIE(InfoExtractor): + IE_DESC = 'YouTube livestream embeds' + _VALID_URL = r'https?://(?:\w+\.)?youtube\.com/embed/live_stream/?\?(?:[^#]+&)?channel=(?P<id>[^&#]+)' + _TESTS = [{ + 'url': 'https://www.youtube.com/embed/live_stream?channel=UC2_KI6RB__jGdlnK6dvFEZA', + 'only_matching': True, + }] + + def _real_extract(self, url): + channel_id = self._match_id(url) + return self.url_result( + f'https://www.youtube.com/channel/{channel_id}/live', + ie=YoutubeTabIE.ie_key(), video_id=channel_id) + + class YoutubeYtUserIE(InfoExtractor): IE_DESC = 'YouTube user videos; "ytuser:" prefix' + IE_NAME = 'youtube:user' _VALID_URL = r'ytuser:(?P<id>.+)' _TESTS = [{ 'url': 'ytuser:phihag', |