Pārlūkot izejas kodu

[tv2] Fix and improve extraction (closes #22787)

Sergey M․ 5 gadi atpakaļ
vecāks
revīzija
9a621ddc3a
1 mainītis faili ar 9 papildinājumiem un 1 dzēšanām
  1. 9 1
      youtube_dl/extractor/tv2.py

+ 9 - 1
youtube_dl/extractor/tv2.py

@@ -11,6 +11,7 @@ from ..utils import (
     js_to_json,
     js_to_json,
     parse_iso8601,
     parse_iso8601,
     remove_end,
     remove_end,
+    try_get,
 )
 )
 
 
 
 
@@ -44,7 +45,14 @@ class TV2IE(InfoExtractor):
             data = self._download_json(
             data = self._download_json(
                 'http://sumo.tv2.no/api/web/asset/%s/play.json?protocol=%s&videoFormat=SMIL+ISMUSP' % (video_id, protocol),
                 'http://sumo.tv2.no/api/web/asset/%s/play.json?protocol=%s&videoFormat=SMIL+ISMUSP' % (video_id, protocol),
                 video_id, 'Downloading play JSON')['playback']
                 video_id, 'Downloading play JSON')['playback']
-            for item in data['items']['item']:
+            items = try_get(data, lambda x: x['items']['item'])
+            if not items:
+                continue
+            if not isinstance(items, list):
+                items = [items]
+            for item in items:
+                if not isinstance(item, dict):
+                    continue
                 video_url = item.get('url')
                 video_url = item.get('url')
                 if not video_url or video_url in format_urls:
                 if not video_url or video_url in format_urls:
                     continue
                     continue