1
0
Fork 0
mirror of https://github.com/ytdl-org/youtube-dl.git synced 2024-11-28 21:22:13 +00:00

[yahoo] Use extracted brightcove account id (closes #14210)

This commit is contained in:
Sergey M․ 2017-10-01 04:37:42 +07:00
parent 2c53bd51c6
commit b69ca0ccfc
No known key found for this signature in database
GPG key ID: 2C393E0F18A9236D

View file

@ -12,11 +12,12 @@ from ..compat import (
) )
from ..utils import ( from ..utils import (
clean_html, clean_html,
unescapeHTML, determine_ext,
ExtractorError, ExtractorError,
extract_attributes,
int_or_none, int_or_none,
mimetype2ext, mimetype2ext,
determine_ext, unescapeHTML,
) )
from .brightcove import ( from .brightcove import (
@ -278,13 +279,21 @@ class YahooIE(InfoExtractor):
if bc_url: if bc_url:
return self.url_result(bc_url, BrightcoveNewIE.ie_key()) return self.url_result(bc_url, BrightcoveNewIE.ie_key())
brightcove_id = self._search_regex( brightcove_iframe = self._search_regex(
r'<iframe[^>]+data-video-id=["\'](\d+)', webpage, 'brightcove id', r'(<iframe[^>]+data-video-id=["\']\d+[^>]+>)', webpage,
default=None) 'brightcove iframe', default=None)
if brightcove_id: if brightcove_iframe:
return self.url_result( attr = extract_attributes(brightcove_iframe)
'http://players.brightcove.net/2376984109001/default_default/index.html?videoId=%s' % brightcove_id, src = attr.get('src')
BrightcoveNewIE.ie_key()) if src:
parsed_src = compat_urlparse.urlparse(src)
qs = compat_urlparse.parse_qs(parsed_src.query)
account_id = qs.get('accountId', ['2376984109001'])[0]
brightcove_id = attr.get('data-video-id') or qs.get('videoId', [None])[0]
if account_id and brightcove_id:
return self.url_result(
'http://players.brightcove.net/%s/default_default/index.html?videoId=%s' % (account_id, brightcove_id),
BrightcoveNewIE.ie_key())
# Query result is often embedded in webpage as JSON. Sometimes explicit requests # Query result is often embedded in webpage as JSON. Sometimes explicit requests
# to video API results in a failure with geo restriction reason therefore using # to video API results in a failure with geo restriction reason therefore using