mirror of
https://github.com/l1ving/youtube-dl
synced 2024-11-24 08:02:50 +08:00
[brightcove] Parse URL from meta element if available (Fixes #2253)
This commit is contained in:
parent
075911d48e
commit
117bec936c
@ -23,7 +23,6 @@ from ..utils import (
|
|||||||
class BrightcoveIE(InfoExtractor):
|
class BrightcoveIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://.*brightcove\.com/(services|viewer).*\?(?P<query>.*)'
|
_VALID_URL = r'https?://.*brightcove\.com/(services|viewer).*\?(?P<query>.*)'
|
||||||
_FEDERATED_URL_TEMPLATE = 'http://c.brightcove.com/services/viewer/htmlFederated?%s'
|
_FEDERATED_URL_TEMPLATE = 'http://c.brightcove.com/services/viewer/htmlFederated?%s'
|
||||||
_PLAYLIST_URL_TEMPLATE = 'http://c.brightcove.com/services/json/experience/runtime/?command=get_programming_for_experience&playerKey=%s'
|
|
||||||
|
|
||||||
_TESTS = [
|
_TESTS = [
|
||||||
{
|
{
|
||||||
@ -71,6 +70,17 @@ class BrightcoveIE(InfoExtractor):
|
|||||||
'uploader': 'National Ballet of Canada',
|
'uploader': 'National Ballet of Canada',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
# https://github.com/rg3/youtube-dl/issues/2253
|
||||||
|
'url': 'http://v.thestar.com/services/player/bcpid2071349530001?bckey=AQ~~,AAAAuO4KaJE~,gatFNwSKdGDmDpIYqNJ-fTHn_c4z_LH_&bctid=3101154703001',
|
||||||
|
'file': '3101154703001.mp4',
|
||||||
|
'md5': '0ba9446db037002366bab3b3eb30c88c',
|
||||||
|
'info_dict': {
|
||||||
|
'title': 'Still no power',
|
||||||
|
'uploader': 'thestar.com',
|
||||||
|
'description': 'Mississauga resident David Farmer is still out of power as a result of the ice storm a month ago. To keep the house warm, Farmer cuts wood from his property for a wood burning stove downstairs.',
|
||||||
|
}
|
||||||
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -131,6 +141,11 @@ class BrightcoveIE(InfoExtractor):
|
|||||||
"""Try to extract the brightcove url from the wepbage, returns None
|
"""Try to extract the brightcove url from the wepbage, returns None
|
||||||
if it can't be found
|
if it can't be found
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
url_m = re.search(r'<meta\s+property="og:video"\s+content="(http://c.brightcove.com/[^"]+)"', webpage)
|
||||||
|
if url_m:
|
||||||
|
return url_m.group(1)
|
||||||
|
|
||||||
m_brightcove = re.search(
|
m_brightcove = re.search(
|
||||||
r'''(?sx)<object
|
r'''(?sx)<object
|
||||||
(?:
|
(?:
|
||||||
@ -183,8 +198,9 @@ class BrightcoveIE(InfoExtractor):
|
|||||||
return self._extract_video_info(video_info)
|
return self._extract_video_info(video_info)
|
||||||
|
|
||||||
def _get_playlist_info(self, player_key):
|
def _get_playlist_info(self, player_key):
|
||||||
playlist_info = self._download_webpage(self._PLAYLIST_URL_TEMPLATE % player_key,
|
info_url = 'http://c.brightcove.com/services/json/experience/runtime/?command=get_programming_for_experience&playerKey=%s' % player_key
|
||||||
player_key, 'Downloading playlist information')
|
playlist_info = self._download_webpage(
|
||||||
|
info_url, player_key, 'Downloading playlist information')
|
||||||
|
|
||||||
json_data = json.loads(playlist_info)
|
json_data = json.loads(playlist_info)
|
||||||
if 'videoList' not in json_data:
|
if 'videoList' not in json_data:
|
||||||
|
Loading…
Reference in New Issue
Block a user