1 from .common
import InfoExtractor
10 class YapFilesIE(InfoExtractor
):
11 _YAPFILES_URL
= r
'//(?:(?:www|api)\.)?yapfiles\.ru/get_player/*\?.*?\bv=(?P<id>\w+)'
12 _VALID_URL
= r
'https?:%s' % _YAPFILES_URL
13 _EMBED_REGEX
= [rf
'<iframe\b[^>]+\bsrc=(["\'])(?P<url>(?:https?:)?{_YAPFILES_URL}.*?)\1']
16 'url': 'http://www.yapfiles.ru/get_player/?v=vMDE1NjcyNDUt0413',
17 'md5': '2db19e2bfa2450568868548a1aa1956c',
19 'id': 'vMDE1NjcyNDUt0413',
21 'title': 'Самый худший пароль WIFI',
22 'thumbnail': r
're:^https?://.*\.jpg$',
27 'url': 'https://api.yapfiles.ru/get_player/?uid=video_player_1872528&plroll=1&adv=1&v=vMDE4NzI1Mjgt690b',
28 'only_matching': True,
31 def _real_extract(self
, url
):
32 video_id
= self
._match
_id
(url
)
34 webpage
= self
._download
_webpage
(url
, video_id
, fatal
=False)
39 player_url
= self
._search
_regex
(
40 r
'player\.init\s*\(\s*(["\'])(?P
<url
>(?
:(?
!\
1).)+)\
1', webpage,
41 'player url
', default=None, group='url
')
44 player_url = 'http
://api
.yapfiles
.ru
/load
/%s/' % video_id
46 'md5
': 'ded5f369be61b8ae5f88e2eeb2f3caff
',
51 player = self._download_json(
52 player_url, video_id, query=query)['player
']
54 playlist_url = player['playlist
']
55 title = player['title
']
56 thumbnail = player.get('poster
')
58 if title == 'Ролик удален
' or 'deleted
.jpg
' in (thumbnail or ''):
60 'Video
%s has been removed
' % video_id, expected=True)
62 playlist = self._download_json(
63 playlist_url, video_id)['player
']['main
']
65 hd_height = int_or_none(player.get('hd
'))
67 QUALITIES = ('sd
', 'hd
')
68 quality_key = qualities(QUALITIES)
70 for format_id in QUALITIES:
71 is_hd = format_id == 'hd
'
72 format_url = url_or_none(playlist.get(
73 'file%s' % ('_hd
' if is_hd else '')))
78 'format_id
': format_id,
79 'quality
': quality_key(format_id),
80 'height
': hd_height if is_hd else None,
86 'thumbnail
': thumbnail,
87 'duration
': int_or_none(player.get('length
')),