aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/extractor/anvato_token_generator
diff options
context:
space:
mode:
authorRemita Amine <remitamine@gmail.com>2020-12-15 16:01:33 +0100
committerRemita Amine <remitamine@gmail.com>2020-12-15 16:01:33 +0100
commitb34c9551aae2609c4ac3ee53cc7ce40e8f14d586 (patch)
treecd095d1b343560d118fea571dc51a62bb2df8ab6 /youtube_dl/extractor/anvato_token_generator
parent84f19c026fc54e8793354a3bf1a1fe634e97e276 (diff)
downloadyoutube-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__.py7
-rw-r--r--youtube_dl/extractor/anvato_token_generator/common.py6
-rw-r--r--youtube_dl/extractor/anvato_token_generator/nfl.py30
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']