|
|
@ -4,6 +4,7 @@ from .common import InfoExtractor
|
|
|
|
from ..utils import (
|
|
|
|
from ..utils import (
|
|
|
|
qualities,
|
|
|
|
qualities,
|
|
|
|
unified_timestamp,
|
|
|
|
unified_timestamp,
|
|
|
|
|
|
|
|
traverse_obj,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -36,6 +37,14 @@ class PearVideoIE(InfoExtractor):
|
|
|
|
} for mobj in re.finditer(
|
|
|
|
} for mobj in re.finditer(
|
|
|
|
r'(?P<id>[a-zA-Z]+)Url\s*=\s*(["\'])(?P<url>(?:https?:)?//.+?)\2',
|
|
|
|
r'(?P<id>[a-zA-Z]+)Url\s*=\s*(["\'])(?P<url>(?:https?:)?//.+?)\2',
|
|
|
|
webpage)]
|
|
|
|
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)
|
|
|
|
self._sort_formats(formats)
|
|
|
|
|
|
|
|
|
|
|
|
title = self._search_regex(
|
|
|
|
title = self._search_regex(
|
|
|
|