mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-12-14 21:27:34 +01:00
[ooyala] check manifest ext with determine_ext and update tests for related extractors
This commit is contained in:
parent
a4760d204f
commit
277c7465f5
@ -11,6 +11,7 @@ class BYUtvIE(InfoExtractor):
|
|||||||
_VALID_URL = r'^https?://(?:www\.)?byutv.org/watch/[0-9a-f-]+/(?P<video_id>[^/?#]+)'
|
_VALID_URL = r'^https?://(?:www\.)?byutv.org/watch/[0-9a-f-]+/(?P<video_id>[^/?#]+)'
|
||||||
_TEST = {
|
_TEST = {
|
||||||
'url': 'http://www.byutv.org/watch/6587b9a3-89d2-42a6-a7f7-fd2f81840a7d/studio-c-season-5-episode-5',
|
'url': 'http://www.byutv.org/watch/6587b9a3-89d2-42a6-a7f7-fd2f81840a7d/studio-c-season-5-episode-5',
|
||||||
|
'md5': '05850eb8c749e2ee05ad5a1c34668493',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'studio-c-season-5-episode-5',
|
'id': 'studio-c-season-5-episode-5',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
@ -19,9 +20,7 @@ class BYUtvIE(InfoExtractor):
|
|||||||
'thumbnail': 're:^https?://.*\.jpg$',
|
'thumbnail': 're:^https?://.*\.jpg$',
|
||||||
'duration': 1486.486,
|
'duration': 1486.486,
|
||||||
},
|
},
|
||||||
'params': {
|
'add_ie': ['Ooyala'],
|
||||||
'skip_download': True,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
|
@ -8,28 +8,24 @@ class ESPNIE(InfoExtractor):
|
|||||||
_VALID_URL = r'https?://espn\.go\.com/(?:[^/]+/)*(?P<id>[^/]+)'
|
_VALID_URL = r'https?://espn\.go\.com/(?:[^/]+/)*(?P<id>[^/]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'http://espn.go.com/video/clip?id=10365079',
|
'url': 'http://espn.go.com/video/clip?id=10365079',
|
||||||
|
'md5': '60e5d097a523e767d06479335d1bdc58',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'FkYWtmazr6Ed8xmvILvKLWjd4QvYZpzG',
|
'id': 'FkYWtmazr6Ed8xmvILvKLWjd4QvYZpzG',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': '30 for 30 Shorts: Judging Jewell',
|
'title': '30 for 30 Shorts: Judging Jewell',
|
||||||
'description': None,
|
'description': None,
|
||||||
},
|
},
|
||||||
'params': {
|
'add_ie': ['OoyalaExternal'],
|
||||||
# m3u8 download
|
|
||||||
'skip_download': True,
|
|
||||||
},
|
|
||||||
}, {
|
}, {
|
||||||
# intl video, from http://www.espnfc.us/video/mls-highlights/150/video/2743663/must-see-moments-best-of-the-mls-season
|
# intl video, from http://www.espnfc.us/video/mls-highlights/150/video/2743663/must-see-moments-best-of-the-mls-season
|
||||||
'url': 'http://espn.go.com/video/clip?id=2743663',
|
'url': 'http://espn.go.com/video/clip?id=2743663',
|
||||||
|
'md5': 'f4ac89b59afc7e2d7dbb049523df6768',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': '50NDFkeTqRHB0nXBOK-RGdSG5YQPuxHg',
|
'id': '50NDFkeTqRHB0nXBOK-RGdSG5YQPuxHg',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': 'Must-See Moments: Best of the MLS season',
|
'title': 'Must-See Moments: Best of the MLS season',
|
||||||
},
|
},
|
||||||
'params': {
|
'add_ie': ['OoyalaExternal'],
|
||||||
# m3u8 download
|
|
||||||
'skip_download': True,
|
|
||||||
},
|
|
||||||
}, {
|
}, {
|
||||||
'url': 'https://espn.go.com/video/iframe/twitter/?cms=espn&id=10365079',
|
'url': 'https://espn.go.com/video/iframe/twitter/?cms=espn&id=10365079',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
|
@ -13,7 +13,8 @@ class Formula1IE(InfoExtractor):
|
|||||||
'id': 'JvYXJpMzE6pArfHWm5ARp5AiUmD-gibV',
|
'id': 'JvYXJpMzE6pArfHWm5ARp5AiUmD-gibV',
|
||||||
'ext': 'flv',
|
'ext': 'flv',
|
||||||
'title': 'Race highlights - Spain 2016',
|
'title': 'Race highlights - Spain 2016',
|
||||||
}
|
},
|
||||||
|
'add_ie': ['Ooyala'],
|
||||||
}
|
}
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
|
@ -14,6 +14,7 @@ class GrouponIE(InfoExtractor):
|
|||||||
'description': 'Studio kept at 105 degrees and 40% humidity with anti-microbial and anti-slip Flotex flooring; certified instructors',
|
'description': 'Studio kept at 105 degrees and 40% humidity with anti-microbial and anti-slip Flotex flooring; certified instructors',
|
||||||
},
|
},
|
||||||
'playlist': [{
|
'playlist': [{
|
||||||
|
'md5': '42428ce8a00585f9bc36e49226eae7a1',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'fk6OhWpXgIQ',
|
'id': 'fk6OhWpXgIQ',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
@ -24,10 +25,8 @@ class GrouponIE(InfoExtractor):
|
|||||||
'uploader_id': 'groupon',
|
'uploader_id': 'groupon',
|
||||||
'uploader': 'Groupon',
|
'uploader': 'Groupon',
|
||||||
},
|
},
|
||||||
}],
|
'add_ie': ['Youtube'],
|
||||||
'params': {
|
}]
|
||||||
'skip_download': True,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_PROVIDERS = {
|
_PROVIDERS = {
|
||||||
|
@ -8,7 +8,7 @@ class HowcastIE(InfoExtractor):
|
|||||||
_VALID_URL = r'https?://(?:www\.)?howcast\.com/videos/(?P<id>\d+)'
|
_VALID_URL = r'https?://(?:www\.)?howcast\.com/videos/(?P<id>\d+)'
|
||||||
_TEST = {
|
_TEST = {
|
||||||
'url': 'http://www.howcast.com/videos/390161-How-to-Tie-a-Square-Knot-Properly',
|
'url': 'http://www.howcast.com/videos/390161-How-to-Tie-a-Square-Knot-Properly',
|
||||||
'md5': '8b743df908c42f60cf6496586c7f12c3',
|
'md5': '7d45932269a288149483144f01b99789',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': '390161',
|
'id': '390161',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
@ -18,10 +18,7 @@ class HowcastIE(InfoExtractor):
|
|||||||
'upload_date': '20100609',
|
'upload_date': '20100609',
|
||||||
'duration': 56.823,
|
'duration': 56.823,
|
||||||
},
|
},
|
||||||
'params': {
|
'add_ie': ['Ooyala'],
|
||||||
# m3u8 download
|
|
||||||
'skip_download': True,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
|
@ -8,6 +8,7 @@ from ..utils import (
|
|||||||
float_or_none,
|
float_or_none,
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
unsmuggle_url,
|
unsmuggle_url,
|
||||||
|
determine_ext,
|
||||||
)
|
)
|
||||||
from ..compat import compat_urllib_parse_urlencode
|
from ..compat import compat_urllib_parse_urlencode
|
||||||
|
|
||||||
@ -37,26 +38,27 @@ class OoyalaBaseIE(InfoExtractor):
|
|||||||
formats = []
|
formats = []
|
||||||
if cur_auth_data['authorized']:
|
if cur_auth_data['authorized']:
|
||||||
for stream in cur_auth_data['streams']:
|
for stream in cur_auth_data['streams']:
|
||||||
url = base64.b64decode(
|
s_url = base64.b64decode(
|
||||||
stream['url']['data'].encode('ascii')).decode('utf-8')
|
stream['url']['data'].encode('ascii')).decode('utf-8')
|
||||||
if url in urls:
|
if s_url in urls:
|
||||||
continue
|
continue
|
||||||
urls.append(url)
|
urls.append(s_url)
|
||||||
|
ext = determine_ext(s_url, None)
|
||||||
delivery_type = stream['delivery_type']
|
delivery_type = stream['delivery_type']
|
||||||
if delivery_type == 'hls' or '.m3u8' in url:
|
if delivery_type == 'hls' or ext == 'm3u8':
|
||||||
formats.extend(self._extract_m3u8_formats(
|
formats.extend(self._extract_m3u8_formats(
|
||||||
url, embed_code, 'mp4', 'm3u8_native',
|
s_url, embed_code, 'mp4', 'm3u8_native',
|
||||||
m3u8_id='hls', fatal=False))
|
m3u8_id='hls', fatal=False))
|
||||||
elif delivery_type == 'hds' or '.f4m' in url:
|
elif delivery_type == 'hds' or ext == 'f4m':
|
||||||
formats.extend(self._extract_f4m_formats(
|
formats.extend(self._extract_f4m_formats(
|
||||||
url + '?hdcore=3.7.0', embed_code, f4m_id='hds', fatal=False))
|
s_url + '?hdcore=3.7.0', embed_code, f4m_id='hds', fatal=False))
|
||||||
elif '.smil' in url:
|
elif ext == 'smil':
|
||||||
formats.extend(self._extract_smil_formats(
|
formats.extend(self._extract_smil_formats(
|
||||||
url, embed_code, fatal=False))
|
s_url, embed_code, fatal=False))
|
||||||
else:
|
else:
|
||||||
formats.append({
|
formats.append({
|
||||||
'url': url,
|
'url': s_url,
|
||||||
'ext': stream.get('delivery_type'),
|
'ext': ext or stream.get('delivery_type'),
|
||||||
'vcodec': stream.get('video_codec'),
|
'vcodec': stream.get('video_codec'),
|
||||||
'format_id': delivery_type,
|
'format_id': delivery_type,
|
||||||
'width': int_or_none(stream.get('width')),
|
'width': int_or_none(stream.get('width')),
|
||||||
|
@ -11,6 +11,7 @@ class TeachingChannelIE(InfoExtractor):
|
|||||||
|
|
||||||
_TEST = {
|
_TEST = {
|
||||||
'url': 'https://www.teachingchannel.org/videos/teacher-teaming-evolution',
|
'url': 'https://www.teachingchannel.org/videos/teacher-teaming-evolution',
|
||||||
|
'md5': '3d6361864d7cac20b57c8784da17166f',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'F3bnlzbToeI6pLEfRyrlfooIILUjz4nM',
|
'id': 'F3bnlzbToeI6pLEfRyrlfooIILUjz4nM',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
@ -18,10 +19,7 @@ class TeachingChannelIE(InfoExtractor):
|
|||||||
'description': 'md5:2a9033db8da81f2edffa4c99888140b3',
|
'description': 'md5:2a9033db8da81f2edffa4c99888140b3',
|
||||||
'duration': 422.255,
|
'duration': 422.255,
|
||||||
},
|
},
|
||||||
'params': {
|
'add_ie': ['Ooyala'],
|
||||||
# m3u8 download
|
|
||||||
'skip_download': True,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
|
@ -37,6 +37,7 @@ class VeohIE(InfoExtractor):
|
|||||||
'uploader': 'afp-news',
|
'uploader': 'afp-news',
|
||||||
'duration': 123,
|
'duration': 123,
|
||||||
},
|
},
|
||||||
|
'skip': 'This video has been deleted.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'url': 'http://www.veoh.com/watch/v69525809F6Nc4frX',
|
'url': 'http://www.veoh.com/watch/v69525809F6Nc4frX',
|
||||||
|
@ -11,12 +11,14 @@ class ViceIE(InfoExtractor):
|
|||||||
|
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'http://www.vice.com/video/cowboy-capitalists-part-1',
|
'url': 'http://www.vice.com/video/cowboy-capitalists-part-1',
|
||||||
|
'md5': 'e9d77741f9e42ba583e683cd170660f7',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': '43cW1mYzpia9IlestBjVpd23Yu3afAfp',
|
'id': '43cW1mYzpia9IlestBjVpd23Yu3afAfp',
|
||||||
'ext': 'flv',
|
'ext': 'flv',
|
||||||
'title': 'VICE_COWBOYCAPITALISTS_PART01_v1_VICE_WM_1080p.mov',
|
'title': 'VICE_COWBOYCAPITALISTS_PART01_v1_VICE_WM_1080p.mov',
|
||||||
'duration': 725.983,
|
'duration': 725.983,
|
||||||
},
|
},
|
||||||
|
'add_ie': ['Ooyala'],
|
||||||
}, {
|
}, {
|
||||||
'url': 'http://www.vice.com/video/how-to-hack-a-car',
|
'url': 'http://www.vice.com/video/how-to-hack-a-car',
|
||||||
'md5': '6fb2989a3fed069fb8eab3401fc2d3c9',
|
'md5': '6fb2989a3fed069fb8eab3401fc2d3c9',
|
||||||
@ -29,6 +31,7 @@ class ViceIE(InfoExtractor):
|
|||||||
'uploader': 'Motherboard',
|
'uploader': 'Motherboard',
|
||||||
'upload_date': '20140529',
|
'upload_date': '20140529',
|
||||||
},
|
},
|
||||||
|
'add_ie': ['Youtube'],
|
||||||
}, {
|
}, {
|
||||||
'url': 'https://news.vice.com/video/experimenting-on-animals-inside-the-monkey-lab',
|
'url': 'https://news.vice.com/video/experimenting-on-animals-inside-the-monkey-lab',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
|
@ -15,7 +15,8 @@ class VoxMediaIE(InfoExtractor):
|
|||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': 'Google\'s new material design direction',
|
'title': 'Google\'s new material design direction',
|
||||||
'description': 'md5:2f44f74c4d14a1f800ea73e1c6832ad2',
|
'description': 'md5:2f44f74c4d14a1f800ea73e1c6832ad2',
|
||||||
}
|
},
|
||||||
|
'add_ie': ['Ooyala'],
|
||||||
}, {
|
}, {
|
||||||
# data-ooyala-id
|
# data-ooyala-id
|
||||||
'url': 'http://www.theverge.com/2014/10/21/7025853/google-nexus-6-hands-on-photos-video-android-phablet',
|
'url': 'http://www.theverge.com/2014/10/21/7025853/google-nexus-6-hands-on-photos-video-android-phablet',
|
||||||
@ -25,7 +26,8 @@ class VoxMediaIE(InfoExtractor):
|
|||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': 'The Nexus 6: hands-on with Google\'s phablet',
|
'title': 'The Nexus 6: hands-on with Google\'s phablet',
|
||||||
'description': 'md5:87a51fe95ff8cea8b5bdb9ac7ae6a6af',
|
'description': 'md5:87a51fe95ff8cea8b5bdb9ac7ae6a6af',
|
||||||
}
|
},
|
||||||
|
'add_ie': ['Ooyala'],
|
||||||
}, {
|
}, {
|
||||||
# volume embed
|
# volume embed
|
||||||
'url': 'http://www.vox.com/2016/3/31/11336640/mississippi-lgbt-religious-freedom-bill',
|
'url': 'http://www.vox.com/2016/3/31/11336640/mississippi-lgbt-religious-freedom-bill',
|
||||||
@ -35,7 +37,8 @@ class VoxMediaIE(InfoExtractor):
|
|||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': 'The new frontier of LGBTQ civil rights, explained',
|
'title': 'The new frontier of LGBTQ civil rights, explained',
|
||||||
'description': 'md5:0dc58e94a465cbe91d02950f770eb93f',
|
'description': 'md5:0dc58e94a465cbe91d02950f770eb93f',
|
||||||
}
|
},
|
||||||
|
'add_ie': ['Ooyala'],
|
||||||
}, {
|
}, {
|
||||||
# youtube embed
|
# youtube embed
|
||||||
'url': 'http://www.vox.com/2016/3/24/11291692/robot-dance',
|
'url': 'http://www.vox.com/2016/3/24/11291692/robot-dance',
|
||||||
@ -48,7 +51,8 @@ class VoxMediaIE(InfoExtractor):
|
|||||||
'upload_date': '20160324',
|
'upload_date': '20160324',
|
||||||
'uploader_id': 'voxdotcom',
|
'uploader_id': 'voxdotcom',
|
||||||
'uploader': 'Vox',
|
'uploader': 'Vox',
|
||||||
}
|
},
|
||||||
|
'add_ie': ['Youtube'],
|
||||||
}, {
|
}, {
|
||||||
# SBN.VideoLinkset.entryGroup multiple ooyala embeds
|
# SBN.VideoLinkset.entryGroup multiple ooyala embeds
|
||||||
'url': 'http://www.sbnation.com/college-football-recruiting/2015/2/3/7970291/national-signing-day-rationalizations-itll-be-ok-itll-be-ok',
|
'url': 'http://www.sbnation.com/college-football-recruiting/2015/2/3/7970291/national-signing-day-rationalizations-itll-be-ok-itll-be-ok',
|
||||||
|
Loading…
Reference in New Issue
Block a user