diff options
| -rw-r--r-- | youtube_dl/compat.py | 6 | ||||
| -rw-r--r-- | youtube_dl/extractor/common.py | 8 | ||||
| -rw-r--r-- | youtube_dl/extractor/viewster.py | 5 | 
3 files changed, 18 insertions, 1 deletions
diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py index 0c57c7aeb..e4b9286c0 100644 --- a/youtube_dl/compat.py +++ b/youtube_dl/compat.py @@ -43,6 +43,11 @@ except ImportError:  # Python 2      import cookielib as compat_cookiejar  try: +    import http.cookies as compat_cookies +except ImportError:  # Python 2 +    import Cookie as compat_cookies + +try:      import html.entities as compat_html_entities  except ImportError:  # Python 2      import htmlentitydefs as compat_html_entities @@ -436,6 +441,7 @@ __all__ = [      'compat_basestring',      'compat_chr',      'compat_cookiejar', +    'compat_cookies',      'compat_expanduser',      'compat_get_terminal_size',      'compat_getenv', diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index d54866d1f..dc5080504 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -14,10 +14,12 @@ import xml.etree.ElementTree  from ..compat import (      compat_cookiejar, +    compat_cookies,      compat_HTTPError,      compat_http_client,      compat_urllib_error,      compat_urllib_parse_urlparse, +    compat_urllib_request,      compat_urlparse,      compat_str,  ) @@ -1074,6 +1076,12 @@ class InfoExtractor(object):              None, '/', True, False, expire_time, '', None, None, None)          self._downloader.cookiejar.set_cookie(cookie) +    def _get_cookies(self, url): +        """ Return a compat_cookies.SimpleCookie with the cookies for the url """ +        req = compat_urllib_request.Request(url) +        self._downloader.cookiejar.add_cookie_header(req) +        return compat_cookies.SimpleCookie(req.get_header('Cookie')) +      def get_testcases(self, include_onlymatching=False):          t = getattr(self, '_TEST', None)          if t: diff --git a/youtube_dl/extractor/viewster.py b/youtube_dl/extractor/viewster.py index 6ef36290b..393b63618 100644 --- a/youtube_dl/extractor/viewster.py +++ b/youtube_dl/extractor/viewster.py @@ -62,7 +62,6 @@ class ViewsterIE(InfoExtractor):      }]      _ACCEPT_HEADER = 'application/json, text/javascript, */*; q=0.01' -    _AUTH_TOKEN = '/YqhSYsx8EaU9Bsta3ojlA=='      def _download_json(self, url, video_id, note='Downloading JSON metadata', fatal=True):          request = compat_urllib_request.Request(url) @@ -72,6 +71,10 @@ class ViewsterIE(InfoExtractor):      def _real_extract(self, url):          video_id = self._match_id(url) +        # Get 'api_token' cookie +        self._request_webpage(url, video_id) +        cookies = self._get_cookies(url) +        self._AUTH_TOKEN = compat_urllib_parse.unquote(cookies['api_token'].value)          info = self._download_json(              'https://public-api.viewster.com/search/%s' % video_id,  | 
