about summary refs log tree commit diff
path: root/youtube_dl/extractor/pbs.py
diff options
context:
space:
mode:
authorRemita Amine <remitamine@gmail.com>2016-12-19 16:27:12 +0100
committerRemita Amine <remitamine@gmail.com>2016-12-19 16:27:12 +0100
commit5aaf012a4eacc50bb5b131f6c26027e391fc379a (patch)
tree55aec4343d4ab4768b5e16e23c2b4079161a1203 /youtube_dl/extractor/pbs.py
parent954529c10fd847d58374dda2a3661f0df2c1d5f6 (diff)
downloadyoutube-dl-5aaf012a4eacc50bb5b131f6c26027e391fc379a.tar.gz
youtube-dl-5aaf012a4eacc50bb5b131f6c26027e391fc379a.tar.xz
youtube-dl-5aaf012a4eacc50bb5b131f6c26027e391fc379a.zip
[pbs] fix extraction for geo restricted videos(#7095)
Diffstat (limited to 'youtube_dl/extractor/pbs.py')
-rw-r--r--youtube_dl/extractor/pbs.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/youtube_dl/extractor/pbs.py b/youtube_dl/extractor/pbs.py
index b490ef74c..f1c0cd068 100644
--- a/youtube_dl/extractor/pbs.py
+++ b/youtube_dl/extractor/pbs.py
@@ -350,6 +350,15 @@ class PBSIE(InfoExtractor):
         410: 'This video has expired and is no longer available for online streaming.',
     }
 
+    def _real_initialize(self):
+        cookie = (self._download_json(
+            'http://localization.services.pbs.org/localize/auto/cookie/',
+            None, headers=self.geo_verification_headers(), fatal=False) or {}).get('cookie')
+        if cookie:
+            station = self._search_regex(r'#?s=\["([^"]+)"', cookie, 'station')
+            if station:
+                self._set_cookie('.pbs.org', 'pbsol.station', station)
+
     def _extract_webpage(self, url):
         mobj = re.match(self._VALID_URL, url)
 
@@ -476,7 +485,8 @@ class PBSIE(InfoExtractor):
 
             redirect_info = self._download_json(
                 '%s?format=json' % redirect['url'], display_id,
-                'Downloading %s video url info' % (redirect_id or num))
+                'Downloading %s video url info' % (redirect_id or num),
+                headers=self.geo_verification_headers())
 
             if redirect_info['status'] == 'error':
                 raise ExtractorError(