1
1
mirror of https://github.com/ytdl-org/youtube-dl synced 2024-11-24 02:46:54 +01:00

[xfileshare:xvidstage] Add support for videos with packed codes (Closes #4335)

This commit is contained in:
Sergey M․ 2016-06-13 01:11:04 +07:00
parent e69f9f5d68
commit bccdac6874
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D

View File

@ -5,8 +5,10 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
decode_packed_codes,
ExtractorError, ExtractorError,
int_or_none, int_or_none,
NO_DEFAULT,
sanitized_Request, sanitized_Request,
urlencode_postdata, urlencode_postdata,
) )
@ -23,6 +25,7 @@ class XFileShareIE(InfoExtractor):
('thevideobee.to', 'TheVideoBee'), ('thevideobee.to', 'TheVideoBee'),
('vidto.me', 'Vidto'), ('vidto.me', 'Vidto'),
('streamin.to', 'Streamin.To'), ('streamin.to', 'Streamin.To'),
('xvidstage.com', 'XVIDSTAGE'),
) )
IE_DESC = 'XFileShare based sites: %s' % ', '.join(list(zip(*_SITES))[1]) IE_DESC = 'XFileShare based sites: %s' % ', '.join(list(zip(*_SITES))[1])
@ -78,6 +81,13 @@ class XFileShareIE(InfoExtractor):
'ext': 'mp4', 'ext': 'mp4',
'title': 'Big Buck Bunny trailer', 'title': 'Big Buck Bunny trailer',
}, },
}, {
'url': 'http://xvidstage.com/e0qcnl03co6z',
'info_dict': {
'id': 'e0qcnl03co6z',
'ext': 'mp4',
'title': 'Chucky Prank 2015.mp4',
},
}] }]
def _real_extract(self, url): def _real_extract(self, url):
@ -113,10 +123,23 @@ class XFileShareIE(InfoExtractor):
r'>Watch (.+) ', r'>Watch (.+) ',
r'<h2 class="video-page-head">([^<]+)</h2>'], r'<h2 class="video-page-head">([^<]+)</h2>'],
webpage, 'title', default=None) or self._og_search_title(webpage)).strip() webpage, 'title', default=None) or self._og_search_title(webpage)).strip()
video_url = self._search_regex(
[r'file\s*:\s*["\'](http[^"\']+)["\'],', def extract_video_url(default=NO_DEFAULT):
r'file_link\s*=\s*\'(https?:\/\/[0-9a-zA-z.\/\-_]+)'], return self._search_regex(
webpage, 'file url') (r'file\s*:\s*(["\'])(?P<url>http.+?)\1,',
r'file_link\s*=\s*(["\'])(?P<url>http.+?)\1',
r'addVariable\((\\?["\'])file\1\s*,\s*(\\?["\'])(?P<url>http.+?)\2\)',
r'<embed[^>]+src=(["\'])(?P<url>http.+?)\1'),
webpage, 'file url', default=default, group='url')
video_url = extract_video_url(default=None)
if not video_url:
webpage = decode_packed_codes(self._search_regex(
r"(}\('(.+)',(\d+),(\d+),'[^']*\b(?:file|embed)\b[^']*'\.split\('\|'\))",
webpage, 'packed code'))
video_url = extract_video_url()
thumbnail = self._search_regex( thumbnail = self._search_regex(
r'image\s*:\s*["\'](http[^"\']+)["\'],', webpage, 'thumbnail', default=None) r'image\s*:\s*["\'](http[^"\']+)["\'],', webpage, 'thumbnail', default=None)