浏览代码

[nexx] handle result list(closes #22666)

Remita Amine 5 年之前
父节点
当前提交
7e05df71b7
共有 1 个文件被更改,包括 14 次插入3 次删除
  1. 14 3
      youtube_dl/extractor/nexx.py

+ 14 - 3
youtube_dl/extractor/nexx.py

@@ -295,13 +295,23 @@ class NexxIE(InfoExtractor):
 
 
         video = None
         video = None
 
 
+        def find_video(result):
+            if isinstance(result, dict):
+                return result
+            elif isinstance(result, list):
+                vid = int(video_id)
+                for v in result:
+                    if try_get(v, lambda x: x['general']['ID'], int) == vid:
+                        return v
+            return None
+
         response = self._download_json(
         response = self._download_json(
             'https://arc.nexx.cloud/api/video/%s.json' % video_id,
             'https://arc.nexx.cloud/api/video/%s.json' % video_id,
             video_id, fatal=False)
             video_id, fatal=False)
         if response and isinstance(response, dict):
         if response and isinstance(response, dict):
             result = response.get('result')
             result = response.get('result')
-            if result and isinstance(result, dict):
-                video = result
+            if result:
+                video = find_video(result)
 
 
         # not all videos work via arc, e.g. nexx:741:1269984
         # not all videos work via arc, e.g. nexx:741:1269984
         if not video:
         if not video:
@@ -348,7 +358,7 @@ class NexxIE(InfoExtractor):
             request_token = hashlib.md5(
             request_token = hashlib.md5(
                 ''.join((op, domain_id, secret)).encode('utf-8')).hexdigest()
                 ''.join((op, domain_id, secret)).encode('utf-8')).hexdigest()
 
 
-            video = self._call_api(
+            result = self._call_api(
                 domain_id, 'videos/%s/%s' % (op, video_id), video_id, data={
                 domain_id, 'videos/%s/%s' % (op, video_id), video_id, data={
                     'additionalfields': 'language,channel,actors,studio,licenseby,slug,subtitle,teaser,description',
                     'additionalfields': 'language,channel,actors,studio,licenseby,slug,subtitle,teaser,description',
                     'addInteractionOptions': '1',
                     'addInteractionOptions': '1',
@@ -363,6 +373,7 @@ class NexxIE(InfoExtractor):
                     'X-Request-CID': cid,
                     'X-Request-CID': cid,
                     'X-Request-Token': request_token,
                     'X-Request-Token': request_token,
                 })
                 })
+            video = find_video(result)
 
 
         general = video['general']
         general = video['general']
         title = general['title']
         title = general['title']