From b34c9551aae2609c4ac3ee53cc7ce40e8f14d586 Mon Sep 17 00:00:00 2001 From: Remita Amine Date: Tue, 15 Dec 2020 16:01:33 +0100 Subject: [anvato] update ANVACK table and add experimental token generator for NFL --- .../extractor/anvato_token_generator/__init__.py | 7 +++++ .../extractor/anvato_token_generator/common.py | 6 +++++ youtube_dl/extractor/anvato_token_generator/nfl.py | 30 ++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 youtube_dl/extractor/anvato_token_generator/__init__.py create mode 100644 youtube_dl/extractor/anvato_token_generator/common.py create mode 100644 youtube_dl/extractor/anvato_token_generator/nfl.py (limited to 'youtube_dl/extractor/anvato_token_generator') 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'] -- cgit v1.2.3