[youtube] Parse player_url if format URLs are encrypted or DASH MPDs are requested
authorYen Chi Hsuan <yan12125@gmail.com>
Sat, 27 May 2017 16:47:41 +0000 (00:47 +0800)
committerYen Chi Hsuan <yan12125@gmail.com>
Sun, 28 May 2017 12:20:20 +0000 (20:20 +0800)
Fixes #13211

ChangeLog
youtube_dl/extractor/youtube.py

index 65a3ca46837cf355e59875389e2f9ce7628caa62..c8dd70fe5832916a1166a34216f4789dbaa2ae44 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
 version <unreleased>
 
 Extractors
+* [youtube] Fix DASH MPD extraction for videos with non-encrypted format URLs
+  (#13211)
 + [youku] Extract more metadata (#10433)
 
 
index d6c098706ac664ea96a47d97fd740e1742f7a628..40ac1a0191a320fe521071fbbf7aac620aafccdd 100644 (file)
@@ -1715,12 +1715,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
                 format_id = url_data['itag'][0]
                 url = url_data['url'][0]
 
-                if 'sig' in url_data:
-                    url += '&signature=' + url_data['sig'][0]
-                elif 's' in url_data:
-                    encrypted_sig = url_data['s'][0]
+                if 's' in url_data or self._downloader.params.get('youtube_include_dash_manifest', True):
                     ASSETS_RE = r'"assets":.+?"js":\s*("[^"]+")'
-
                     jsplayer_url_json = self._search_regex(
                         ASSETS_RE,
                         embed_webpage if age_gate else video_webpage,
@@ -1741,6 +1737,11 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
                             video_webpage, 'age gate player URL')
                         player_url = json.loads(player_url_json)
 
+                if 'sig' in url_data:
+                    url += '&signature=' + url_data['sig'][0]
+                elif 's' in url_data:
+                    encrypted_sig = url_data['s'][0]
+
                     if self._downloader.params.get('verbose'):
                         if player_url is None:
                             player_version = 'unknown'