|
|
@ -1,6 +1,6 @@
|
|
|
|
|
|
|
|
import hashlib
|
|
|
|
import re
|
|
|
|
import re
|
|
|
|
|
|
|
|
|
|
|
|
from hashlib import sha1
|
|
|
|
|
|
|
|
from .common import InfoExtractor
|
|
|
|
from .common import InfoExtractor
|
|
|
|
from ..compat import compat_str
|
|
|
|
from ..compat import compat_str
|
|
|
|
from ..utils import (
|
|
|
|
from ..utils import (
|
|
|
@ -42,7 +42,7 @@ class ProSiebenSat1BaseIE(InfoExtractor):
|
|
|
|
'Downloading protocols JSON',
|
|
|
|
'Downloading protocols JSON',
|
|
|
|
headers=self.geo_verification_headers(), query={
|
|
|
|
headers=self.geo_verification_headers(), query={
|
|
|
|
'access_id': self._ACCESS_ID,
|
|
|
|
'access_id': self._ACCESS_ID,
|
|
|
|
'client_token': sha1((raw_ct).encode()).hexdigest(),
|
|
|
|
'client_token': hashlib.sha1((raw_ct).encode()).hexdigest(),
|
|
|
|
'video_id': clip_id,
|
|
|
|
'video_id': clip_id,
|
|
|
|
}, fatal=False, expected_status=(403,)) or {}
|
|
|
|
}, fatal=False, expected_status=(403,)) or {}
|
|
|
|
error = protocols.get('error') or {}
|
|
|
|
error = protocols.get('error') or {}
|
|
|
@ -53,7 +53,7 @@ class ProSiebenSat1BaseIE(InfoExtractor):
|
|
|
|
urls = (self._download_json(
|
|
|
|
urls = (self._download_json(
|
|
|
|
self._V4_BASE_URL + 'urls', clip_id, 'Downloading urls JSON', query={
|
|
|
|
self._V4_BASE_URL + 'urls', clip_id, 'Downloading urls JSON', query={
|
|
|
|
'access_id': self._ACCESS_ID,
|
|
|
|
'access_id': self._ACCESS_ID,
|
|
|
|
'client_token': sha1((raw_ct + server_token + self._SUPPORTED_PROTOCOLS).encode()).hexdigest(),
|
|
|
|
'client_token': hashlib.sha1((raw_ct + server_token + self._SUPPORTED_PROTOCOLS).encode()).hexdigest(),
|
|
|
|
'protocols': self._SUPPORTED_PROTOCOLS,
|
|
|
|
'protocols': self._SUPPORTED_PROTOCOLS,
|
|
|
|
'server_token': server_token,
|
|
|
|
'server_token': server_token,
|
|
|
|
'video_id': clip_id,
|
|
|
|
'video_id': clip_id,
|
|
|
@ -77,7 +77,7 @@ class ProSiebenSat1BaseIE(InfoExtractor):
|
|
|
|
if not formats:
|
|
|
|
if not formats:
|
|
|
|
source_ids = [compat_str(source['id']) for source in video['sources']]
|
|
|
|
source_ids = [compat_str(source['id']) for source in video['sources']]
|
|
|
|
|
|
|
|
|
|
|
|
client_id = self._SALT[:2] + sha1(''.join([clip_id, self._SALT, self._TOKEN, client_location, self._SALT, self._CLIENT_NAME]).encode('utf-8')).hexdigest()
|
|
|
|
client_id = self._SALT[:2] + hashlib.sha1(''.join([clip_id, self._SALT, self._TOKEN, client_location, self._SALT, self._CLIENT_NAME]).encode('utf-8')).hexdigest()
|
|
|
|
|
|
|
|
|
|
|
|
sources = self._download_json(
|
|
|
|
sources = self._download_json(
|
|
|
|
'http://vas.sim-technik.de/vas/live/v2/videos/%s/sources' % clip_id,
|
|
|
|
'http://vas.sim-technik.de/vas/live/v2/videos/%s/sources' % clip_id,
|
|
|
@ -96,7 +96,7 @@ class ProSiebenSat1BaseIE(InfoExtractor):
|
|
|
|
return (bitrate // 1000) if bitrate % 1000 == 0 else bitrate
|
|
|
|
return (bitrate // 1000) if bitrate % 1000 == 0 else bitrate
|
|
|
|
|
|
|
|
|
|
|
|
for source_id in source_ids:
|
|
|
|
for source_id in source_ids:
|
|
|
|
client_id = self._SALT[:2] + sha1(''.join([self._SALT, clip_id, self._TOKEN, server_id, client_location, source_id, self._SALT, self._CLIENT_NAME]).encode('utf-8')).hexdigest()
|
|
|
|
client_id = self._SALT[:2] + hashlib.sha1(''.join([self._SALT, clip_id, self._TOKEN, server_id, client_location, source_id, self._SALT, self._CLIENT_NAME]).encode('utf-8')).hexdigest()
|
|
|
|
urls = self._download_json(
|
|
|
|
urls = self._download_json(
|
|
|
|
'http://vas.sim-technik.de/vas/live/v2/videos/%s/sources/url' % clip_id,
|
|
|
|
'http://vas.sim-technik.de/vas/live/v2/videos/%s/sources/url' % clip_id,
|
|
|
|
clip_id, 'Downloading urls JSON', fatal=False, query={
|
|
|
|
clip_id, 'Downloading urls JSON', fatal=False, query={
|
|
|
|