| @@ -1,13 +1,18 @@ | |||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
|  |  | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..compat import compat_b64decode | from ..compat import ( | ||||||
|  |     compat_b64decode, | ||||||
|  |     compat_urllib_parse_unquote_plus, | ||||||
|  | ) | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     determine_ext, |     determine_ext, | ||||||
|     ExtractorError, |     ExtractorError, | ||||||
|     int_or_none, |     int_or_none, | ||||||
|  |     js_to_json, | ||||||
|     KNOWN_EXTENSIONS, |     KNOWN_EXTENSIONS, | ||||||
|     parse_filesize, |     parse_filesize, | ||||||
|  |     rot47, | ||||||
|     url_or_none, |     url_or_none, | ||||||
|     urlencode_postdata, |     urlencode_postdata, | ||||||
| ) | ) | ||||||
| @@ -112,16 +117,22 @@ class VivoIE(SharedBaseIE): | |||||||
|             webpage, 'filesize', fatal=False)) |             webpage, 'filesize', fatal=False)) | ||||||
|  |  | ||||||
|     def _extract_video_url(self, webpage, video_id, url): |     def _extract_video_url(self, webpage, video_id, url): | ||||||
|         def decode_url(encoded_url): |         def decode_url_old(encoded_url): | ||||||
|             return compat_b64decode(encoded_url).decode('utf-8') |             return compat_b64decode(encoded_url).decode('utf-8') | ||||||
|  |  | ||||||
|         stream_url = url_or_none(decode_url(self._search_regex( |         stream_url = self._search_regex( | ||||||
|             r'data-stream\s*=\s*(["\'])(?P<url>(?:(?!\1).)+)\1', webpage, |             r'data-stream\s*=\s*(["\'])(?P<url>(?:(?!\1).)+)\1', webpage, | ||||||
|             'stream url', default=None, group='url'))) |             'stream url', default=None, group='url') | ||||||
|  |         if stream_url: | ||||||
|  |             stream_url = url_or_none(decode_url_old(stream_url)) | ||||||
|         if stream_url: |         if stream_url: | ||||||
|             return stream_url |             return stream_url | ||||||
|         return self._parse_json( |  | ||||||
|  |         def decode_url(encoded_url): | ||||||
|  |             return rot47(compat_urllib_parse_unquote_plus(encoded_url)) | ||||||
|  |  | ||||||
|  |         return decode_url(self._parse_json( | ||||||
|             self._search_regex( |             self._search_regex( | ||||||
|                 r'InitializeStream\s*\(\s*(["\'])(?P<url>(?:(?!\1).)+)\1', |                 r'(?s)InitializeStream\s*\(\s*({.+?})\s*\)\s*;', webpage, | ||||||
|                 webpage, 'stream', group='url'), |                 'stream'), | ||||||
|             video_id, transform_source=decode_url)[0] |             video_id, transform_source=js_to_json)['source']) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․