|
|
@ -1,11 +1,16 @@ |
|
|
|
# coding: utf-8 |
|
|
|
from __future__ import unicode_literals |
|
|
|
|
|
|
|
from .common import InfoExtractor |
|
|
|
from ..utils import smuggle_url |
|
|
|
import re |
|
|
|
|
|
|
|
from .jwplatform import JWPlatformBaseIE |
|
|
|
from ..utils import ( |
|
|
|
base36, |
|
|
|
js_to_json, |
|
|
|
) |
|
|
|
|
|
|
|
class VidziIE(InfoExtractor): |
|
|
|
|
|
|
|
class VidziIE(JWPlatformBaseIE): |
|
|
|
_VALID_URL = r'https?://(?:www\.)?vidzi\.tv/(?P<id>\w+)' |
|
|
|
_TEST = { |
|
|
|
'url': 'http://vidzi.tv/cghql9yq6emu.html', |
|
|
@ -14,7 +19,6 @@ class VidziIE(InfoExtractor): |
|
|
|
'id': 'cghql9yq6emu', |
|
|
|
'ext': 'mp4', |
|
|
|
'title': 'youtube-dl test video 1\\\\2\'3/4<5\\\\6ä7↭', |
|
|
|
'uploader': 'vidzi.tv', |
|
|
|
}, |
|
|
|
'params': { |
|
|
|
# m3u8 download |
|
|
@ -29,11 +33,23 @@ class VidziIE(InfoExtractor): |
|
|
|
title = self._html_search_regex( |
|
|
|
r'(?s)<h2 class="video-title">(.*?)</h2>', webpage, 'title') |
|
|
|
|
|
|
|
# Vidzi now uses jwplayer, which can be handled by GenericIE |
|
|
|
return { |
|
|
|
'_type': 'url_transparent', |
|
|
|
'id': video_id, |
|
|
|
'title': title, |
|
|
|
'url': smuggle_url(url, {'to_generic': True}), |
|
|
|
'ie_key': 'Generic', |
|
|
|
} |
|
|
|
mobj = re.search(r"}\('(.+)',36,(\d+),'([^']+)'\.split\('\|'\)", webpage) |
|
|
|
code, count, symbols = mobj.groups() |
|
|
|
|
|
|
|
count = int(count) |
|
|
|
symbols = symbols.split('|') |
|
|
|
|
|
|
|
while count: |
|
|
|
count -= 1 |
|
|
|
if symbols[count]: |
|
|
|
code = re.sub(r'\b%s\b' % base36(count), symbols[count], code) |
|
|
|
|
|
|
|
code = code.replace('\\\'', '\'') |
|
|
|
jwplayer_data = self._parse_json( |
|
|
|
self._search_regex(r'setup\(([^)]+)\)', code, 'jwplayer data'), |
|
|
|
video_id, transform_source=js_to_json) |
|
|
|
|
|
|
|
info_dict = self._parse_jwplayer_data(jwplayer_data, video_id, require_title=False) |
|
|
|
info_dict['title'] = title |
|
|
|
|
|
|
|
return info_dict |