mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-12-15 07:42:42 +00:00
[crackle] authorize media detail request(closes #16931)
This commit is contained in:
parent
7b0f9df23d
commit
645c4885cf
1 changed files with 12 additions and 6 deletions
|
@ -1,7 +1,10 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
from __future__ import unicode_literals, division
|
from __future__ import unicode_literals, division
|
||||||
|
|
||||||
|
import hashlib
|
||||||
|
import hmac
|
||||||
import re
|
import re
|
||||||
|
import time
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..compat import compat_HTTPError
|
from ..compat import compat_HTTPError
|
||||||
|
@ -74,13 +77,16 @@ class CrackleIE(InfoExtractor):
|
||||||
|
|
||||||
for country in countries:
|
for country in countries:
|
||||||
try:
|
try:
|
||||||
|
# Authorization generation algorithm is reverse engineered from:
|
||||||
|
# https://www.sonycrackle.com/static/js/main.ea93451f.chunk.js
|
||||||
|
media_detail_url = 'https://web-api-us.crackle.com/Service.svc/details/media/%s/%s?disableProtocols=true' % (video_id, country)
|
||||||
|
timestamp = time.strftime('%Y%m%d%H%M', time.gmtime())
|
||||||
|
h = hmac.new(b'IGSLUQCBDFHEOIFM', '|'.join([media_detail_url, timestamp]).encode(), hashlib.sha1).hexdigest().upper()
|
||||||
media = self._download_json(
|
media = self._download_json(
|
||||||
'https://web-api-us.crackle.com/Service.svc/details/media/%s/%s'
|
media_detail_url, video_id, 'Downloading media JSON as %s' % country,
|
||||||
% (video_id, country), video_id,
|
'Unable to download media JSON', headers={
|
||||||
'Downloading media JSON as %s' % country,
|
'Accept': 'application/json',
|
||||||
'Unable to download media JSON', query={
|
'Authorization': '|'.join([h, timestamp, '117', '1']),
|
||||||
'disableProtocols': 'true',
|
|
||||||
'format': 'json'
|
|
||||||
})
|
})
|
||||||
except ExtractorError as e:
|
except ExtractorError as e:
|
||||||
# 401 means geo restriction, trying next country
|
# 401 means geo restriction, trying next country
|
||||||
|
|
Loading…
Reference in a new issue