diff options
author | Remita Amine <remitamine@gmail.com> | 2020-12-15 16:01:33 +0100 |
---|---|---|
committer | Remita Amine <remitamine@gmail.com> | 2020-12-15 16:01:33 +0100 |
commit | b34c9551aae2609c4ac3ee53cc7ce40e8f14d586 (patch) | |
tree | cd095d1b343560d118fea571dc51a62bb2df8ab6 /youtube_dl/extractor/anvato_token_generator | |
parent | 84f19c026fc54e8793354a3bf1a1fe634e97e276 (diff) | |
download | youtube-dl-b34c9551aae2609c4ac3ee53cc7ce40e8f14d586.tar.xz |
[anvato] update ANVACK table and add experimental token generator for NFL
Diffstat (limited to 'youtube_dl/extractor/anvato_token_generator')
-rw-r--r-- | youtube_dl/extractor/anvato_token_generator/__init__.py | 7 | ||||
-rw-r--r-- | youtube_dl/extractor/anvato_token_generator/common.py | 6 | ||||
-rw-r--r-- | youtube_dl/extractor/anvato_token_generator/nfl.py | 30 |
3 files changed, 43 insertions, 0 deletions
diff --git a/youtube_dl/extractor/anvato_token_generator/__init__.py b/youtube_dl/extractor/anvato_token_generator/__init__.py new file mode 100644 index 000000000..6e223db9f --- /dev/null +++ b/youtube_dl/extractor/anvato_token_generator/__init__.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +from .nfl import NFLTokenGenerator + +__all__ = [ + 'NFLTokenGenerator', +] diff --git a/youtube_dl/extractor/anvato_token_generator/common.py b/youtube_dl/extractor/anvato_token_generator/common.py new file mode 100644 index 000000000..b959a903b --- /dev/null +++ b/youtube_dl/extractor/anvato_token_generator/common.py @@ -0,0 +1,6 @@ +from __future__ import unicode_literals + + +class TokenGenerator: + def generate(self, anvack, mcp_id): + raise NotImplementedError('This method must be implemented by subclasses') diff --git a/youtube_dl/extractor/anvato_token_generator/nfl.py b/youtube_dl/extractor/anvato_token_generator/nfl.py new file mode 100644 index 000000000..97a2b245f --- /dev/null +++ b/youtube_dl/extractor/anvato_token_generator/nfl.py @@ -0,0 +1,30 @@ +from __future__ import unicode_literals + +import json + +from .common import TokenGenerator + + +class NFLTokenGenerator(TokenGenerator): + _AUTHORIZATION = None + + def generate(ie, anvack, mcp_id): + if not NFLTokenGenerator._AUTHORIZATION: + reroute = ie._download_json( + 'https://api.nfl.com/v1/reroute', mcp_id, + data=b'grant_type=client_credentials', + headers={'X-Domain-Id': 100}) + NFLTokenGenerator._AUTHORIZATION = '%s %s' % (reroute.get('token_type') or 'Bearer', reroute['access_token']) + return ie._download_json( + 'https://api.nfl.com/v3/shield/', mcp_id, data=json.dumps({ + 'query': '''{ + viewer { + mediaToken(anvack: "%s", id: %s) { + token + } + } +}''' % (anvack, mcp_id), + }).encode(), headers={ + 'Authorization': NFLTokenGenerator._AUTHORIZATION, + 'Content-Type': 'application/json', + })['data']['viewer']['mediaToken']['token'] |