[discovery] Extract the video access token when possible

Fixes #14954
This commit is contained in:
Cookie Guru 2018-01-29 23:07:20 -08:00
parent ecc218ab14
commit 080fad4b58

View File

@ -4,6 +4,7 @@ import random
import re import re
import string import string
from ..compat import compat_urllib_parse_unquote
from .discoverygo import DiscoveryGoBaseIE from .discoverygo import DiscoveryGoBaseIE
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
@ -54,6 +55,17 @@ class DiscoveryIE(DiscoveryGoBaseIE):
video = next(cb for cb in content_blocks if cb.get('type') == 'video')['content']['items'][0] video = next(cb for cb in content_blocks if cb.get('type') == 'video')['content']['items'][0]
video_id = video['id'] video_id = video['id']
access_token = None
cookies = self._get_cookies(url)
cookie = cookies.get('eosAn')
if not cookie:
cookie = cookies.get('eosAf')
if cookie:
json = self._parse_json(compat_urllib_parse_unquote(compat_urllib_parse_unquote(cookie.value)), video_id)
access_token = json['access_token']
if not access_token:
self.report_warning('Cookies not found in header')
access_token = self._download_json( access_token = self._download_json(
'https://www.discovery.com/anonymous', display_id, query={ 'https://www.discovery.com/anonymous', display_id, query={
'authLink': update_url_query( 'authLink': update_url_query(