]> jfr.im git - yt-dlp.git/commitdiff
[PearVideo] Add fallback for formats (#3438)
authorHa Tien Loi <redacted>
Fri, 22 Apr 2022 13:45:52 +0000 (20:45 +0700)
committerGitHub <redacted>
Fri, 22 Apr 2022 13:45:52 +0000 (06:45 -0700)
Closes #3425
Authored by: hatienl0i261299

yt_dlp/extractor/pearvideo.py

index d552e09666037a7ddbfd63623206f8939e91eefa..e76305acd4e16f224cf1d6996becb82ca7117e0b 100644 (file)
@@ -4,6 +4,7 @@
 from ..utils import (
     qualities,
     unified_timestamp,
+    traverse_obj,
 )
 
 
@@ -36,6 +37,14 @@ def _real_extract(self, url):
         } for mobj in re.finditer(
             r'(?P<id>[a-zA-Z]+)Url\s*=\s*(["\'])(?P<url>(?:https?:)?//.+?)\2',
             webpage)]
+        if not formats:
+            info = self._download_json(
+                'https://www.pearvideo.com/videoStatus.jsp', video_id=video_id,
+                query={'contId': video_id}, headers={'Referer': url})
+            formats = [{
+                'format_id': k,
+                'url': v.replace(info['systemTime'], f'cont-{video_id}') if k == 'srcUrl' else v
+            } for k, v in traverse_obj(info, ('videoInfo', 'videos'), default={}).items() if v]
         self._sort_formats(formats)
 
         title = self._search_regex(