|
@@ -148,13 +148,34 @@ class NRKBaseIE(InfoExtractor):
|
|
|
|
|
|
vcodec = 'none' if data.get('mediaType') == 'Audio' else None
|
|
vcodec = 'none' if data.get('mediaType') == 'Audio' else None
|
|
|
|
|
|
- # TODO: extract chapters when https://github.com/rg3/youtube-dl/pull/9409 is merged
|
|
|
|
-
|
|
|
|
for entry in entries:
|
|
for entry in entries:
|
|
entry.update(common_info)
|
|
entry.update(common_info)
|
|
for f in entry['formats']:
|
|
for f in entry['formats']:
|
|
f['vcodec'] = vcodec
|
|
f['vcodec'] = vcodec
|
|
|
|
|
|
|
|
+ points = data.get('shortIndexPoints')
|
|
|
|
+ if isinstance(points, list):
|
|
|
|
+ chapters = []
|
|
|
|
+ for next_num, point in enumerate(points, start=1):
|
|
|
|
+ if not isinstance(point, dict):
|
|
|
|
+ continue
|
|
|
|
+ start_time = parse_duration(point.get('startPoint'))
|
|
|
|
+ if start_time is None:
|
|
|
|
+ continue
|
|
|
|
+ end_time = parse_duration(
|
|
|
|
+ data.get('duration')
|
|
|
|
+ if next_num == len(points)
|
|
|
|
+ else points[next_num].get('startPoint'))
|
|
|
|
+ if end_time is None:
|
|
|
|
+ continue
|
|
|
|
+ chapters.append({
|
|
|
|
+ 'start_time': start_time,
|
|
|
|
+ 'end_time': end_time,
|
|
|
|
+ 'title': point.get('title'),
|
|
|
|
+ })
|
|
|
|
+ if chapters and len(entries) == 1:
|
|
|
|
+ entries[0]['chapters'] = chapters
|
|
|
|
+
|
|
return self.playlist_result(entries, video_id, title, description)
|
|
return self.playlist_result(entries, video_id, title, description)
|
|
|
|
|
|
|
|
|