]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/atvat.py
[ie/crunchyroll] Fix stream extraction (#10005)
[yt-dlp.git] / yt_dlp / extractor / atvat.py
index 7c30cfcbb9cee580a75a1e8286e89f6e5a9a21be..d60feba3159af8c73df4e6d3c241d14e7480c25f 100644 (file)
@@ -1,13 +1,11 @@
-# coding: utf-8
-from __future__ import unicode_literals
-
-import datetime
+import datetime as dt
 
 from .common import InfoExtractor
 from ..utils import (
     float_or_none,
     jwt_encode_hs256,
     try_get,
+    ExtractorError,
 )
 
 
@@ -51,7 +49,6 @@ def _extract_video_info(self, url, content, video):
                     'url': source_url,
                     'format_id': protocol,
                 })
-        self._sort_formats(formats)
 
         return {
             'id': clip_id,
@@ -74,9 +71,9 @@ def _real_extract(self, url):
         content_ids = [{'id': id, 'subclip_start': content['start'], 'subclip_end': content['end']}
                        for id, content in enumerate(contentResource)]
 
-        time_of_request = datetime.datetime.now()
-        not_before = time_of_request - datetime.timedelta(minutes=5)
-        expire = time_of_request + datetime.timedelta(minutes=5)
+        time_of_request = dt.datetime.now()
+        not_before = time_of_request - dt.timedelta(minutes=5)
+        expire = time_of_request + dt.timedelta(minutes=5)
         payload = {
             'content_ids': {
                 content_id: content_ids,
@@ -94,6 +91,11 @@ def _real_extract(self, url):
             })
 
         video_id, videos_data = list(videos['data'].items())[0]
+        error_msg = try_get(videos_data, lambda x: x['error']['title'])
+        if error_msg == 'Geo check failed':
+            self.raise_geo_restricted(error_msg)
+        elif error_msg:
+            raise ExtractorError(error_msg)
         entries = [
             self._extract_video_info(url, contentResource[video['id']], video)
             for video in videos_data]