[nrk] Extract subtitles
authorSergey M․ <dstftw@gmail.com>
Sun, 3 Jan 2021 00:02:13 +0000 (07:02 +0700)
committerSergey M․ <dstftw@gmail.com>
Sun, 3 Jan 2021 00:02:13 +0000 (07:02 +0700)
youtube_dl/extractor/nrk.py

index d023de7f77330ab1c594901b27aa095c7205aa5a..bd96d9d149832fe2ea73a9439cb8b8198fee5b41 100644 (file)
@@ -12,6 +12,7 @@ from ..utils import (
     ExtractorError,
     int_or_none,
     parse_duration,
+    str_or_none,
     try_get,
     urljoin,
     url_or_none,
@@ -204,6 +205,21 @@ class NRKIE(NRKBaseIE):
                 'height': int_or_none(image.get('pixelHeight')),
             })
 
+        subtitles = {}
+        for sub in try_get(playable, lambda x: x['subtitles'], list) or []:
+            if not isinstance(sub, dict):
+                continue
+            sub_url = url_or_none(sub.get('webVtt'))
+            if not sub_url:
+                continue
+            sub_key = str_or_none(sub.get('language')) or 'nb'
+            sub_type = str_or_none(sub.get('type'))
+            if sub_type:
+                sub_key += '-%s' % sub_type
+            subtitles.setdefault(sub_key, []).append({
+                'url': sub_url,
+            })
+
         age_limit = int_or_none(try_get(
             data, lambda x: x['legalAge']['body']['rating']['code']))
 
@@ -216,6 +232,7 @@ class NRKIE(NRKBaseIE):
             'thumbnails': thumbnails,
             'age_limit': age_limit,
             'formats': formats,
+            'subtitles': subtitles,
         }