projects
/
youtube-dl
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
dafafe7
)
[kaltura] fix extraction error for videos from multiple kaltura servers
author
Remita Amine
<remitamine@gmail.com>
Mon, 4 Jul 2016 20:34:27 +0000
(21:34 +0100)
committer
Remita Amine
<remitamine@gmail.com>
Mon, 4 Jul 2016 20:34:27 +0000
(21:34 +0100)
youtube_dl/extractor/kaltura.py
patch
|
blob
|
history
diff --git
a/youtube_dl/extractor/kaltura.py
b/youtube_dl/extractor/kaltura.py
index 147bb8cf08f836c70f4dc63ed83569010df1c4f7..1729f5bfbfa84efebcef054423152e5dcb1ec8d2 100644
(file)
--- a/
youtube_dl/extractor/kaltura.py
+++ b/
youtube_dl/extractor/kaltura.py
@@
-91,14
+91,15
@@
class KalturaIE(InfoExtractor):
if mobj:
embed_info = mobj.groupdict()
url = 'kaltura:%(partner_id)s:%(id)s' % embed_info
if mobj:
embed_info = mobj.groupdict()
url = 'kaltura:%(partner_id)s:%(id)s' % embed_info
+ escaped_pid = re.escape(embed_info['partner_id'])
service_url = re.search(
service_url = re.search(
-
'<script[^>]+src=(?:["\'])((?:https?:)?//.+?)/p/%(partner_id)s/sp/%(partner_id)s00/embedIframeJs' % embed_info
,
+
r'<script[^>]+src=["\']((?:https?:)?//.+?)/p/%s/sp/%s00/embedIframeJs' % (escaped_pid, escaped_pid)
,
webpage)
if service_url:
url = smuggle_url(url, {'service_url': service_url.group(1)})
return url
webpage)
if service_url:
url = smuggle_url(url, {'service_url': service_url.group(1)})
return url
- def _kaltura_api_call(self, video_id, actions, *args, **kwargs):
+ def _kaltura_api_call(self, video_id, actions,
service_url=None,
*args, **kwargs):
params = actions[0]
if len(actions) > 1:
for i, a in enumerate(actions[1:], start=1):
params = actions[0]
if len(actions) > 1:
for i, a in enumerate(actions[1:], start=1):
@@
-106,7
+107,7
@@
class KalturaIE(InfoExtractor):
params['%d:%s' % (i, k)] = v
data = self._download_json(
params['%d:%s' % (i, k)] = v
data = self._download_json(
-
self._SERVICE_URL
+ self._SERVICE_BASE,
+
(service_url or self._SERVICE_URL)
+ self._SERVICE_BASE,
video_id, query=params, *args, **kwargs)
status = data if len(actions) == 1 else data[0]
video_id, query=params, *args, **kwargs)
status = data if len(actions) == 1 else data[0]
@@
-116,7
+117,7
@@
class KalturaIE(InfoExtractor):
return data
return data
- def _get_kaltura_signature(self, video_id, partner_id):
+ def _get_kaltura_signature(self, video_id, partner_id
, service_url=None
):
actions = [{
'apiVersion': '3.1',
'expiry': 86400,
actions = [{
'apiVersion': '3.1',
'expiry': 86400,
@@
-126,10
+127,10
@@
class KalturaIE(InfoExtractor):
'widgetId': '_%s' % partner_id,
}]
return self._kaltura_api_call(
'widgetId': '_%s' % partner_id,
}]
return self._kaltura_api_call(
- video_id, actions, note='Downloading Kaltura signature')['ks']
+ video_id, actions,
service_url,
note='Downloading Kaltura signature')['ks']
- def _get_video_info(self, video_id, partner_id):
- signature = self._get_kaltura_signature(video_id, partner_id)
+ def _get_video_info(self, video_id, partner_id
, service_url=None
):
+ signature = self._get_kaltura_signature(video_id, partner_id
, service_url
)
actions = [
{
'action': 'null',
actions = [
{
'action': 'null',
@@
-152,19
+153,16
@@
class KalturaIE(InfoExtractor):
},
]
return self._kaltura_api_call(
},
]
return self._kaltura_api_call(
- video_id, actions, note='Downloading video info JSON')
+ video_id, actions,
service_url,
note='Downloading video info JSON')
def _real_extract(self, url):
url, smuggled_data = unsmuggle_url(url, {})
def _real_extract(self, url):
url, smuggled_data = unsmuggle_url(url, {})
- service_url = smuggled_data.get('service_url')
- if service_url:
- self._SERVICE_URL = service_url
mobj = re.match(self._VALID_URL, url)
partner_id, entry_id = mobj.group('partner_id', 'id')
ks = None
if partner_id and entry_id:
mobj = re.match(self._VALID_URL, url)
partner_id, entry_id = mobj.group('partner_id', 'id')
ks = None
if partner_id and entry_id:
- info, flavor_assets = self._get_video_info(entry_id, partner_id)
+ info, flavor_assets = self._get_video_info(entry_id, partner_id
, smuggled_data.get('service_url')
)
else:
path, query = mobj.group('path', 'query')
if not path and not query:
else:
path, query = mobj.group('path', 'query')
if not path and not query: