]> jfr.im git - yt-dlp.git/blob - yt_dlp/extractor/vbox7.py
76c844cb8748f11a4d61981fb9b4d34f289053b5
[yt-dlp.git] / yt_dlp / extractor / vbox7.py
1 import re
2
3 from .common import InfoExtractor
4 from ..utils import ExtractorError
5
6
7 class Vbox7IE(InfoExtractor):
8 _VALID_URL = r'''(?x)
9 https?://
10 (?:[^/]+\.)?vbox7\.com/
11 (?:
12 play:|
13 (?:
14 emb/external\.php|
15 player/ext\.swf
16 )\?.*?\bvid=
17 )
18 (?P<id>[\da-fA-F]+)
19 '''
20 _GEO_COUNTRIES = ['BG']
21 _TESTS = [{
22 'url': 'http://vbox7.com/play:0946fff23c',
23 'md5': 'a60f9ab3a3a2f013ef9a967d5f7be5bf',
24 'info_dict': {
25 'id': '0946fff23c',
26 'ext': 'mp4',
27 'title': 'Борисов: Притеснен съм за бъдещето на България',
28 'description': 'По думите му е опасно страната ни да бъде обявена за "сигурна"',
29 'thumbnail': r're:^https?://.*\.jpg$',
30 'timestamp': 1470982814,
31 'upload_date': '20160812',
32 'uploader': 'zdraveibulgaria',
33 },
34 'params': {
35 'proxy': '127.0.0.1:8118',
36 },
37 }, {
38 'url': 'http://vbox7.com/play:249bb972c2',
39 'md5': '99f65c0c9ef9b682b97313e052734c3f',
40 'info_dict': {
41 'id': '249bb972c2',
42 'ext': 'mp4',
43 'title': 'Смях! Чудо - чист за секунди - Скрита камера',
44 },
45 'skip': 'georestricted',
46 }, {
47 'url': 'http://vbox7.com/emb/external.php?vid=a240d20f9c&autoplay=1',
48 'only_matching': True,
49 }, {
50 'url': 'http://i49.vbox7.com/player/ext.swf?vid=0946fff23c&autoplay=1',
51 'only_matching': True,
52 }]
53
54 @staticmethod
55 def _extract_url(webpage):
56 mobj = re.search(
57 r'<iframe[^>]+src=(?P<q>["\'])(?P<url>(?:https?:)?//vbox7\.com/emb/external\.php.+?)(?P=q)',
58 webpage)
59 if mobj:
60 return mobj.group('url')
61
62 def _real_extract(self, url):
63 video_id = self._match_id(url)
64
65 response = self._download_json(
66 'https://www.vbox7.com/ajax/video/nextvideo.php?vid=%s' % video_id,
67 video_id)
68
69 if 'error' in response:
70 raise ExtractorError(
71 '%s said: %s' % (self.IE_NAME, response['error']), expected=True)
72
73 video = response['options']
74
75 title = video['title']
76 video_url = video['src']
77
78 if '/na.mp4' in video_url:
79 self.raise_geo_restricted(countries=self._GEO_COUNTRIES)
80
81 uploader = video.get('uploader')
82
83 webpage = self._download_webpage(
84 'http://vbox7.com/play:%s' % video_id, video_id, fatal=None)
85
86 info = {}
87
88 if webpage:
89 info = self._search_json_ld(
90 webpage.replace('"/*@context"', '"@context"'), video_id,
91 fatal=False)
92
93 info.update({
94 'id': video_id,
95 'title': title,
96 'url': video_url,
97 'uploader': uploader,
98 'thumbnail': self._proto_relative_url(
99 info.get('thumbnail') or self._og_search_thumbnail(webpage),
100 'http:'),
101 })
102 return info