1 from .common
import InfoExtractor
10 class NTVRuIE(InfoExtractor
):
12 _VALID_URL
= r
'https?://(?:www\.)?ntv\.ru/(?:[^/]+/)*(?P<id>[^/?#&]+)'
15 'url': 'http://www.ntv.ru/novosti/863142/',
16 'md5': 'ba7ea172a91cb83eb734cad18c10e723',
20 'title': 'Командующий Черноморским флотом провел переговоры в штабе ВМС Украины',
21 'description': 'Командующий Черноморским флотом провел переговоры в штабе ВМС Украины',
22 'thumbnail': r
're:^http://.*\.jpg',
27 'url': 'http://www.ntv.ru/video/novosti/750370/',
28 'md5': 'adecff79691b4d71e25220a191477124',
32 'title': 'Родные пассажиров пропавшего Boeing не верят в трагический исход',
33 'description': 'Родные пассажиров пропавшего Boeing не верят в трагический исход',
34 'thumbnail': r
're:^http://.*\.jpg',
38 'skip': '404 Not Found',
40 'url': 'http://www.ntv.ru/peredacha/segodnya/m23700/o232416',
41 'md5': '82dbd49b38e3af1d00df16acbeab260c',
45 'title': '«Сегодня». 21 марта 2014 года. 16:00',
46 'description': '«Сегодня». 21 марта 2014 года. 16:00',
47 'thumbnail': r
're:^http://.*\.jpg',
52 'url': 'https://www.ntv.ru/kino/Koma_film/m70281/o336036/video/',
53 'md5': 'e9c7cde24d9d3eaed545911a04e6d4f4',
57 'title': 'Остросюжетный фильм «Кома»',
58 'description': 'Остросюжетный фильм «Кома»',
59 'thumbnail': r
're:^http://.*\.jpg',
64 'url': 'http://www.ntv.ru/serial/Delo_vrachey/m31760/o233916/',
65 'md5': '9320cd0e23f3ea59c330dc744e06ff3b',
69 'title': '«Дело врачей»: «Деревце жизни»',
70 'description': '«Дело врачей»: «Деревце жизни»',
71 'thumbnail': r
're:^http://.*\.jpg',
77 'url': 'https://www.ntv.ru/video/1797442',
78 'only_matching': True,
82 r
'<meta property="og:url" content="https?://www\.ntv\.ru/video/(\d+)',
83 r
'<meta property="og:video:(?:url|iframe)" content="https?://www\.ntv\.ru/embed/(\d+)',
84 r
'<video embed=[^>]+><id>(\d+)</id>',
85 r
'<video restriction[^>]+><key>(\d+)</key>',
88 def _real_extract(self
, url
):
89 video_id
= self
._match
_id
(url
)
91 webpage
= self
._download
_webpage
(url
, video_id
)
93 video_url
= self
._og
_search
_property
(
94 ('video', 'video:iframe'), webpage
, default
=None)
96 video_id
= self
._search
_regex
(
97 r
'https?://(?:www\.)?ntv\.ru/video/(?:embed/)?(\d+)',
98 video_url
, 'video id', default
=None)
101 video_id
= self
._html
_search
_regex
(
102 self
._VIDEO
_ID
_REGEXES
, webpage
, 'video id')
104 player
= self
._download
_xml
(
105 f
'http://www.ntv.ru/vi{video_id}/',
106 video_id
, 'Downloading video XML')
108 title
= strip_or_none(unescapeHTML(xpath_text(player
, './data/title', 'title', fatal
=True)))
110 video
= player
.find('./data/video')
113 for format_id
in ['', 'hi', 'webm']:
114 file_
= xpath_text(video
, f
'./{format_id}file')
117 if file_
.startswith('//'):
118 file_
= self
._proto
_relative
_url
(file_
)
119 elif not file_
.startswith('http'):
120 file_
= 'http://media.ntv.ru/vod/' + file_
123 'filesize': int_or_none(xpath_text(video
, f
'./{format_id}size')),
125 hls_manifest
= xpath_text(video
, './playback/hls')
127 formats
.extend(self
._extract
_m
3u8_formats
(
128 hls_manifest
, video_id
, m3u8_id
='hls', fatal
=False))
129 dash_manifest
= xpath_text(video
, './playback/dash')
131 formats
.extend(self
._extract
_mpd
_formats
(
132 dash_manifest
, video_id
, mpd_id
='dash', fatal
=False))
135 'id': xpath_text(video
, './id'),
137 'description': strip_or_none(unescapeHTML(xpath_text(player
, './data/description'))),
138 'thumbnail': xpath_text(video
, './splash'),
139 'duration': int_or_none(xpath_text(video
, './totaltime')),
140 'view_count': int_or_none(xpath_text(video
, './views')),