mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-27 06:10:12 +01:00
new test, new style.
This commit is contained in:
parent
4afcb21d24
commit
d5df68ed81
|
@ -11,6 +11,7 @@
|
||||||
strip_or_none,
|
strip_or_none,
|
||||||
unified_timestamp,
|
unified_timestamp,
|
||||||
update_url_query,
|
update_url_query,
|
||||||
|
url_or_none,
|
||||||
)
|
)
|
||||||
from ..utils.traversal import traverse_obj
|
from ..utils.traversal import traverse_obj
|
||||||
|
|
||||||
|
@ -90,16 +91,18 @@ def _extract_video(self, video_info, video_id):
|
||||||
self._remove_duplicate_formats(formats)
|
self._remove_duplicate_formats(formats)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
**traverse_obj(video_info, {
|
||||||
|
'title': ('title', {strip_or_none}),
|
||||||
|
'duration': ('duration', {float_or_none(scale=1000)}),
|
||||||
|
'age_limit': ('parental', 'age', {int_or_none}),
|
||||||
|
'thumbnails': (
|
||||||
|
('posterUrl', 'wideCoverUrl'), {update_url_query(query={'width': 1408})},
|
||||||
|
{lambda x: {'url': x, 'width': 1408}},
|
||||||
|
),
|
||||||
|
}),
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
'title': strip_or_none(video_info['title']),
|
|
||||||
'duration': float_or_none(video_info.get('duration'), scale=1000),
|
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
'subtitles': subtitles,
|
'subtitles': subtitles,
|
||||||
'age_limit': traverse_obj(video_info, ('parental', 'age', {int_or_none})),
|
|
||||||
'thumbnails': [{
|
|
||||||
'url': update_url_query(x, {'width': 1408}),
|
|
||||||
'width': 1408,
|
|
||||||
} for x in [video_info.get('posterUrl'), video_info.get('wideCoverUrl')] if x],
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -258,16 +261,6 @@ class FifaArticleIE(InfoExtractor):
|
||||||
'upload_date': '20220428',
|
'upload_date': '20220428',
|
||||||
},
|
},
|
||||||
'playlist': [{
|
'playlist': [{
|
||||||
'info_dict': {
|
|
||||||
'id': '6B2xtOT2SDMB4JeF3i9n2y',
|
|
||||||
'ext': 'mp4',
|
|
||||||
'title': 'Foord & Kerr: Friends and rivals',
|
|
||||||
'description': 'md5:756e14e1814196948ec4d2a9663f7214',
|
|
||||||
'duration': 82,
|
|
||||||
'categories': ['News', 'Interview'],
|
|
||||||
'thumbnail': r're:https://digitalhub\.fifa\.com/transform/[^/]+/\w+',
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'R2Y1vbwvggrlSr02Cfr99',
|
'id': 'R2Y1vbwvggrlSr02Cfr99',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
|
@ -277,8 +270,32 @@ class FifaArticleIE(InfoExtractor):
|
||||||
'categories': ['News', 'Interview'],
|
'categories': ['News', 'Interview'],
|
||||||
'thumbnail': r're:https://digitalhub\.fifa\.com/transform/[^/]+/\w+',
|
'thumbnail': r're:https://digitalhub\.fifa\.com/transform/[^/]+/\w+',
|
||||||
},
|
},
|
||||||
|
}, {
|
||||||
|
'info_dict': {
|
||||||
|
'id': '6B2xtOT2SDMB4JeF3i9n2y',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'Foord & Kerr: Friends and rivals',
|
||||||
|
'description': 'md5:756e14e1814196948ec4d2a9663f7214',
|
||||||
|
'duration': 82,
|
||||||
|
'categories': ['News', 'Interview'],
|
||||||
|
'thumbnail': r're:https://digitalhub\.fifa\.com/transform/[^/]+/\w+',
|
||||||
|
},
|
||||||
}],
|
}],
|
||||||
'params': {'skip_download': 'm3u8'},
|
'params': {'skip_download': 'm3u8'},
|
||||||
|
}, {
|
||||||
|
'url': 'https://www.fifa.com/en/articles/100-great-world-cup-moments-qatar-2022-11-pele-1958-sweden-youngest-scorer',
|
||||||
|
'md5': '2df0f3303650c5f4ee21bec24500bad3',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '100-great-world-cup-moments-qatar-2022-11-pele-1958-sweden-youngest-scorer',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'O Rei arrives in style (11) | 100 great World Cup moments',
|
||||||
|
'description': 'Watch some of the best goals ever scored in the FIFA World Cup™.',
|
||||||
|
'duration': 30,
|
||||||
|
'categories': ['FIFA Tournaments'],
|
||||||
|
'thumbnail': r're:https://digitalhub\.fifa\.com/transform/[^/]+/\w+',
|
||||||
|
'timestamp': 1667988000,
|
||||||
|
'upload_date': '20221109',
|
||||||
|
},
|
||||||
}, {
|
}, {
|
||||||
# https://www.fifa.com/en/articles/stars-set-to-collide-in-uwcl-final
|
# https://www.fifa.com/en/articles/stars-set-to-collide-in-uwcl-final
|
||||||
'url': 'https://www.fifa.com/fifaplus/en/articles/stars-set-to-collide-in-uwcl-final',
|
'url': 'https://www.fifa.com/fifaplus/en/articles/stars-set-to-collide-in-uwcl-final',
|
||||||
|
@ -310,13 +327,15 @@ def _entries(self, video_ids, article_id):
|
||||||
formats, subtitles = self._extract_m3u8_formats_and_subtitles(content_data['playURL'], article_id)
|
formats, subtitles = self._extract_m3u8_formats_and_subtitles(content_data['playURL'], article_id)
|
||||||
|
|
||||||
yield {
|
yield {
|
||||||
|
**traverse_obj(video_details, {
|
||||||
|
'title': 'title',
|
||||||
|
'description': 'description',
|
||||||
|
'duration': ('duration', {int_or_none}),
|
||||||
|
'release_timestamp': ('dateOfRelease', {unified_timestamp}),
|
||||||
|
'categories': (('videoCategory', 'videoSubcategory'), all, ..., {str}),
|
||||||
|
'thumbnail': ('backgroundImage', 'src', {url_or_none}),
|
||||||
|
}),
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
'title': video_details.get('title'),
|
|
||||||
'description': video_details.get('description'),
|
|
||||||
'duration': int_or_none(video_details.get('duration')),
|
|
||||||
'release_timestamp': unified_timestamp(video_details.get('dateOfRelease')),
|
|
||||||
'categories': traverse_obj(video_details, (('videoCategory', 'videoSubcategory'),)),
|
|
||||||
'thumbnail': traverse_obj(video_details, ('backgroundImage', 'src')),
|
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
'subtitles': subtitles,
|
'subtitles': subtitles,
|
||||||
}
|
}
|
||||||
|
@ -327,13 +346,26 @@ def _real_extract(self, url):
|
||||||
page_id = self._call_api(f'pages/en/articles/{article_id}', article_id)['pageId']
|
page_id = self._call_api(f'pages/en/articles/{article_id}', article_id)['pageId']
|
||||||
page_info = self._call_api(f'sections/article/{page_id}', article_id, query={'locale': locale})
|
page_info = self._call_api(f'sections/article/{page_id}', article_id, query={'locale': locale})
|
||||||
|
|
||||||
video_ids = []
|
video_ids = traverse_obj(page_info, (
|
||||||
|
'richtext', 'content', lambda _, v: v['data']['target']['contentTypesCheckboxValue'] == 'Video',
|
||||||
|
'data', 'target', 'sys', 'id'))
|
||||||
if hero_video_entry_id := page_info.get('heroVideoEntryId'):
|
if hero_video_entry_id := page_info.get('heroVideoEntryId'):
|
||||||
video_ids.append(hero_video_entry_id)
|
video_ids.append(hero_video_entry_id)
|
||||||
video_ids.extend(traverse_obj(page_info, (
|
|
||||||
'richtext', 'content', lambda _, v: v['data']['target']['contentTypesCheckboxValue'] == 'Video',
|
|
||||||
'data', 'target', 'sys', 'id')))
|
|
||||||
|
|
||||||
return self.playlist_result(
|
entries = list(self._entries(video_ids, article_id))
|
||||||
self._entries(video_ids, article_id), article_id, page_info.get('articleTitle'),
|
|
||||||
timestamp=parse_iso8601(page_info.get('articlePublishedDate')))
|
common_info = {
|
||||||
|
**traverse_obj(page_info, {
|
||||||
|
'title': 'articleTitle',
|
||||||
|
'timestamp': ('articlePublishedDate', {parse_iso8601}),
|
||||||
|
}),
|
||||||
|
'id': article_id,
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(entries) == 1:
|
||||||
|
return {
|
||||||
|
**entries[0],
|
||||||
|
**common_info,
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.playlist_result(entries, **common_info)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user