mirror of https://github.com/yt-dlp/yt-dlp.git
[pbs] extract chapters information
This commit is contained in:
parent
fa2a36d9bc
commit
7a6d33a9a5
|
@ -8,6 +8,7 @@ from ..utils import (
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
determine_ext,
|
determine_ext,
|
||||||
int_or_none,
|
int_or_none,
|
||||||
|
float_or_none,
|
||||||
js_to_json,
|
js_to_json,
|
||||||
strip_jsonp,
|
strip_jsonp,
|
||||||
strip_or_none,
|
strip_or_none,
|
||||||
|
@ -464,6 +465,7 @@ class PBSIE(InfoExtractor):
|
||||||
redirects.append(redirect)
|
redirects.append(redirect)
|
||||||
redirect_urls.add(redirect_url)
|
redirect_urls.add(redirect_url)
|
||||||
|
|
||||||
|
chapters = []
|
||||||
# Player pages may also serve different qualities
|
# Player pages may also serve different qualities
|
||||||
for page in ('widget/partnerplayer', 'portalplayer'):
|
for page in ('widget/partnerplayer', 'portalplayer'):
|
||||||
player = self._download_webpage(
|
player = self._download_webpage(
|
||||||
|
@ -479,6 +481,20 @@ class PBSIE(InfoExtractor):
|
||||||
extract_redirect_urls(video_info)
|
extract_redirect_urls(video_info)
|
||||||
if not info:
|
if not info:
|
||||||
info = video_info
|
info = video_info
|
||||||
|
if not chapters:
|
||||||
|
for chapter_data in re.findall(r'(?s)chapters\.push\(({.*?})\)', player):
|
||||||
|
chapter = self._parse_json(chapter_data, video_id, js_to_json, fatal=False)
|
||||||
|
if not chapter:
|
||||||
|
continue
|
||||||
|
start_time = float_or_none(chapter.get('start_time'), 1000)
|
||||||
|
duration = float_or_none(chapter.get('duration'), 1000)
|
||||||
|
if start_time is None or duration is None:
|
||||||
|
continue
|
||||||
|
chapters.append({
|
||||||
|
'start_time': start_time,
|
||||||
|
'end_time': start_time + duration,
|
||||||
|
'title': chapter.get('title'),
|
||||||
|
})
|
||||||
|
|
||||||
formats = []
|
formats = []
|
||||||
http_url = None
|
http_url = None
|
||||||
|
@ -588,4 +604,5 @@ class PBSIE(InfoExtractor):
|
||||||
'upload_date': upload_date,
|
'upload_date': upload_date,
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
'subtitles': subtitles,
|
'subtitles': subtitles,
|
||||||
|
'chapters': chapters,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue