mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-09 18:03:25 +00:00
[ie/vimeo] Fix chapters extraction (#10544)
Closes #5308 Authored by: bashonly
This commit is contained in:
parent
2f97779f33
commit
a0a1bc3d8d
|
@ -212,16 +212,6 @@ def _parse_config(self, config, video_id):
|
||||||
owner = video_data.get('owner') or {}
|
owner = video_data.get('owner') or {}
|
||||||
video_uploader_url = owner.get('url')
|
video_uploader_url = owner.get('url')
|
||||||
|
|
||||||
duration = int_or_none(video_data.get('duration'))
|
|
||||||
chapter_data = try_get(config, lambda x: x['embed']['chapters']) or []
|
|
||||||
chapters = [{
|
|
||||||
'title': current_chapter.get('title'),
|
|
||||||
'start_time': current_chapter.get('timecode'),
|
|
||||||
'end_time': next_chapter.get('timecode'),
|
|
||||||
} for current_chapter, next_chapter in zip(chapter_data, chapter_data[1:] + [{'timecode': duration}])]
|
|
||||||
if chapters and chapters[0]['start_time']: # Chapters may not start from 0
|
|
||||||
chapters[:0] = [{'title': '<Untitled>', 'start_time': 0, 'end_time': chapters[0]['start_time']}]
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'id': str_or_none(video_data.get('id')) or video_id,
|
'id': str_or_none(video_data.get('id')) or video_id,
|
||||||
'title': video_title,
|
'title': video_title,
|
||||||
|
@ -229,8 +219,12 @@ def _parse_config(self, config, video_id):
|
||||||
'uploader_id': video_uploader_url.split('/')[-1] if video_uploader_url else None,
|
'uploader_id': video_uploader_url.split('/')[-1] if video_uploader_url else None,
|
||||||
'uploader_url': video_uploader_url,
|
'uploader_url': video_uploader_url,
|
||||||
'thumbnails': thumbnails,
|
'thumbnails': thumbnails,
|
||||||
'duration': duration,
|
'duration': int_or_none(video_data.get('duration')),
|
||||||
'chapters': chapters or None,
|
'chapters': sorted(traverse_obj(config, (
|
||||||
|
'embed', 'chapters', lambda _, v: int(v['timecode']) is not None, {
|
||||||
|
'title': ('title', {str}),
|
||||||
|
'start_time': ('timecode', {int_or_none}),
|
||||||
|
})), key=lambda c: c['start_time']) or None,
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
'subtitles': subtitles,
|
'subtitles': subtitles,
|
||||||
'live_status': live_status,
|
'live_status': live_status,
|
||||||
|
@ -708,6 +702,39 @@ class VimeoIE(VimeoBaseInfoExtractor):
|
||||||
'skip_download': True,
|
'skip_download': True,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
# chapters must be sorted, see: https://github.com/yt-dlp/yt-dlp/issues/5308
|
||||||
|
'url': 'https://player.vimeo.com/video/756714419',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '756714419',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'Dr Arielle Schwartz - Therapeutic yoga for optimum sleep',
|
||||||
|
'uploader': 'Alex Howard',
|
||||||
|
'uploader_id': 'user54729178',
|
||||||
|
'uploader_url': 'https://vimeo.com/user54729178',
|
||||||
|
'thumbnail': r're:https://i\.vimeocdn\.com/video/1520099929-[\da-f]+-d_1280',
|
||||||
|
'duration': 2636,
|
||||||
|
'chapters': [
|
||||||
|
{'start_time': 0, 'end_time': 10, 'title': '<Untitled Chapter 1>'},
|
||||||
|
{'start_time': 10, 'end_time': 106, 'title': 'Welcoming Dr Arielle Schwartz'},
|
||||||
|
{'start_time': 106, 'end_time': 305, 'title': 'What is therapeutic yoga?'},
|
||||||
|
{'start_time': 305, 'end_time': 594, 'title': 'Vagal toning practices'},
|
||||||
|
{'start_time': 594, 'end_time': 888, 'title': 'Trauma and difficulty letting go'},
|
||||||
|
{'start_time': 888, 'end_time': 1059, 'title': "Dr Schwartz' insomnia experience"},
|
||||||
|
{'start_time': 1059, 'end_time': 1471, 'title': 'A strategy for helping sleep issues'},
|
||||||
|
{'start_time': 1471, 'end_time': 1667, 'title': 'Yoga nidra'},
|
||||||
|
{'start_time': 1667, 'end_time': 2121, 'title': 'Wisdom in stillness'},
|
||||||
|
{'start_time': 2121, 'end_time': 2386, 'title': 'What helps us be more able to let go?'},
|
||||||
|
{'start_time': 2386, 'end_time': 2510, 'title': 'Practical tips to help ourselves'},
|
||||||
|
{'start_time': 2510, 'end_time': 2636, 'title': 'Where to find out more'},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'params': {
|
||||||
|
'http_headers': {'Referer': 'https://sleepsuperconference.com'},
|
||||||
|
'skip_download': 'm3u8',
|
||||||
|
},
|
||||||
|
'expected_warnings': ['Failed to parse XML: not well-formed'],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
# user playlist alias -> https://vimeo.com/258705797
|
# user playlist alias -> https://vimeo.com/258705797
|
||||||
'url': 'https://vimeo.com/user26785108/newspiritualguide',
|
'url': 'https://vimeo.com/user26785108/newspiritualguide',
|
||||||
|
|
Loading…
Reference in a new issue