[youtube] Correct language cookie handling
authorPhilipp Hagemeister <phihag@phihag.de>
Mon, 29 Sep 2014 00:04:16 +0000 (02:04 +0200)
committerPhilipp Hagemeister <phihag@phihag.de>
Mon, 29 Sep 2014 00:04:16 +0000 (02:04 +0200)
youtube_dl/extractor/youtube.py

index 61228817e319c6571525d1e821593b5b899b5010..9041cfa8770897851d06026942517a103df2a639 100644 (file)
@@ -655,9 +655,17 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor):
 
         # Get video webpage
         url = proto + '://www.youtube.com/watch?v=%s&gl=US&hl=en&has_verified=1' % video_id
-        req = compat_urllib_request.Request(url)
-        req.add_header('Cookie', 'PREF=hl=en')
-        video_webpage = self._download_webpage(req, video_id)
+        pref_cookies = [
+            c for c in self._downloader.cookiejar
+            if c.domain == '.youtube.com' and c.name == 'PREF']
+        for pc in pref_cookies:
+            if 'hl=' in pc.value:
+                pc.value = re.sub(r'hl=[^&]+', 'hl=en', pc.value)
+            else:
+                if pc.value:
+                    pc.value += '&'
+                pc.value += 'hl=en'
+        video_webpage = self._download_webpage(url, video_id)
 
         # Attempt to extract SWF player URL
         mobj = re.search(r'swfConfig.*?"(https?:\\/\\/.*?watch.*?-.*?\.swf)"', video_webpage)