diff options
| author | Sergey M․ <dstftw@gmail.com> | 2017-05-05 22:59:15 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2017-05-05 22:59:15 +0700 | 
| commit | 329e3dd5adf52520c87ba31395d090455114783b (patch) | |
| tree | 272594edbab617696b4b6e232235e7a4265c9566 | |
| parent | 1d9e0a4f40deaeb2f722cf964e6bf13b3835e617 (diff) | |
[nrk] Extract chapters
| -rw-r--r-- | youtube_dl/extractor/nrk.py | 25 | 
1 files changed, 23 insertions, 2 deletions
| diff --git a/youtube_dl/extractor/nrk.py b/youtube_dl/extractor/nrk.py index 7fe79cb53..3b4f51f61 100644 --- a/youtube_dl/extractor/nrk.py +++ b/youtube_dl/extractor/nrk.py @@ -148,13 +148,34 @@ class NRKBaseIE(InfoExtractor):          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:              entry.update(common_info)              for f in entry['formats']:                  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) | 
