1 from .common
import InfoExtractor
2 from ..utils
import ExtractorError
5 class SmotrimIE(InfoExtractor
):
6 _VALID_URL
= r
'https?://smotrim\.ru/(?P<type>brand|video|article|live)/(?P<id>[0-9]+)'
8 'url': 'https://smotrim.ru/video/1539617',
9 'md5': 'b1923a533c8cab09679789d720d0b1c5',
13 'title': 'Полиглот. Китайский с нуля за 16 часов! Урок №16',
17 }, { # article (geo-restricted? plays fine from the US and JP)
18 'url': 'https://smotrim.ru/article/2813445',
19 'md5': 'e0ac453952afbc6a2742e850b4dc8e77',
23 'title': 'Новости культуры. Съёмки первой программы "Большие и маленькие"',
24 'description': 'md5:94a4a22472da4252bf5587a4ee441b99',
27 }, { # brand, redirect
28 'url': 'https://smotrim.ru/brand/64356',
29 'md5': '740472999ccff81d7f6df79cecd91c18',
33 'title': 'Большие и маленькие. Лучшее. 4-й выпуск',
34 'description': 'md5:84089e834429008371ea41ea3507b989',
38 'url': 'https://smotrim.ru/live/19201',
42 # this looks like a TV channel name
43 'title': 'Россия Культура. Прямой эфир',
49 def _real_extract(self
, url
):
50 video_id
, typ
= self
._match
_valid
_url
(url
).group('id', 'type')
52 if typ
not in ('video', 'live'):
53 webpage
= self
._download
_webpage
(url
, video_id
, f
'Resolving {typ} link')
54 # there are two cases matching regex:
55 # 1. "embedUrl" in JSON LD (/brand/)
56 # 2. "src" attribute from iframe (/article/)
57 video_id
= self
._search
_regex
(
58 r
'"https://player.smotrim.ru/iframe/video/id/(?P<video_id>\d+)/',
59 webpage
, 'video_id', default
=None)
61 raise ExtractorError('There are no video in this page.', expected
=True)
65 return self
.url_result(f
'https://player.vgtrk.com/iframe/{rutv_type}/id/{video_id}')