[youtube] Restrict is_live extraction (closes #21782)
[youtube-dl] / youtube_dl / extractor / youtube.py
index 8a3c502ba480b62b07bd447a76649437287826d0..43a3fad9f81409419c3a2d35468f2c8e78006a72 100644 (file)
@@ -371,10 +371,14 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
                             (?:www\.)?hooktube\.com/|
                             (?:www\.)?yourepeat\.com/|
                             tube\.majestyc\.net/|
+                            # Invidious instances taken from https://github.com/omarroth/invidious/wiki/Invidious-Instances
                             (?:(?:www|dev)\.)?invidio\.us/|
-                            (?:www\.)?invidiou\.sh/|
-                            (?:www\.)?invidious\.snopyta\.org/|
+                            (?:(?:www|no)\.)?invidiou\.sh/|
+                            (?:(?:www|fi|de)\.)?invidious\.snopyta\.org/|
                             (?:www\.)?invidious\.kabi\.tk/|
+                            (?:www\.)?invidious\.enkirton\.net/|
+                            (?:www\.)?invidious\.13ad\.de/|
+                            (?:www\.)?tube\.poal\.co/|
                             (?:www\.)?vid\.wxzm\.sx/|
                             youtube\.googleapis\.com/)                        # the various hostnames, with wildcard subdomains
                          (?:.*?\#/)?                                          # handle anchor (#/) redirect urls
@@ -1892,9 +1896,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
             view_count = int_or_none(video_details.get('viewCount'))
 
         if is_live is None:
-            is_live = bool_or_none(dict_get(
-                video_details, ('isLive', 'isLiveContent'),
-                skip_false_values=False))
+            is_live = bool_or_none(video_details.get('isLive'))
 
         # Check for "rental" videos
         if 'ypc_video_rental_bar_text' in video_info and 'author' not in video_info: