]>
jfr.im git - yt-dlp.git/blob - yt_dlp/extractor/ntvru.py
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',
39 'url': 'http://www.ntv.ru/peredacha/segodnya/m23700/o232416',
40 'md5': '82dbd49b38e3af1d00df16acbeab260c',
44 'title': '«Сегодня». 21 марта 2014 года. 16:00',
45 'description': '«Сегодня». 21 марта 2014 года. 16:00',
46 'thumbnail': r
're:^http://.*\.jpg',
51 'url': 'https://www.ntv.ru/kino/Koma_film/m70281/o336036/video/',
52 'md5': 'e9c7cde24d9d3eaed545911a04e6d4f4',
56 'title': 'Остросюжетный фильм «Кома»',
57 'description': 'Остросюжетный фильм «Кома»',
58 'thumbnail': r
're:^http://.*\.jpg',
63 'url': 'http://www.ntv.ru/serial/Delo_vrachey/m31760/o233916/',
64 'md5': '9320cd0e23f3ea59c330dc744e06ff3b',
68 'title': '«Дело врачей»: «Деревце жизни»',
69 'description': '«Дело врачей»: «Деревце жизни»',
70 'thumbnail': r
're:^http://.*\.jpg',
76 'url': 'https://www.ntv.ru/video/1797442',
77 'only_matching': True,
81 r
'<meta property="og:url" content="http://www\.ntv\.ru/video/(\d+)',
82 r
'<video embed=[^>]+><id>(\d+)</id>',
83 r
'<video restriction[^>]+><key>(\d+)</key>',
86 def _real_extract(self
, url
):
87 video_id
= self
._match
_id
(url
)
89 webpage
= self
._download
_webpage
(url
, video_id
)
91 video_url
= self
._og
_search
_property
(
92 ('video', 'video:iframe'), webpage
, default
=None)
94 video_id
= self
._search
_regex
(
95 r
'https?://(?:www\.)?ntv\.ru/video/(?:embed/)?(\d+)',
96 video_url
, 'video id', default
=None)
99 video_id
= self
._html
_search
_regex
(
100 self
._VIDEO
_ID
_REGEXES
, webpage
, 'video id')
102 player
= self
._download
_xml
(
103 'http://www.ntv.ru/vi%s/' % video_id
,
104 video_id
, 'Downloading video XML')
106 title
= strip_or_none(unescapeHTML(xpath_text(player
, './data/title', 'title', fatal
=True)))
108 video
= player
.find('./data/video')
111 for format_id
in ['', 'hi', 'webm']:
112 file_
= xpath_text(video
, './%sfile' % format_id
)
115 if file_
.startswith('//'):
116 file_
= self
._proto
_relative
_url
(file_
)
117 elif not file_
.startswith('http'):
118 file_
= 'http://media.ntv.ru/vod/' + file_
121 'filesize': int_or_none(xpath_text(video
, './%ssize' % format_id
)),
123 hls_manifest
= xpath_text(video
, './playback/hls')
125 formats
.extend(self
._extract
_m
3u8_formats
(
126 hls_manifest
, video_id
, m3u8_id
='hls', fatal
=False))
127 dash_manifest
= xpath_text(video
, './playback/dash')
129 formats
.extend(self
._extract
_mpd
_formats
(
130 dash_manifest
, video_id
, mpd_id
='dash', fatal
=False))
133 'id': xpath_text(video
, './id'),
135 'description': strip_or_none(unescapeHTML(xpath_text(player
, './data/description'))),
136 'thumbnail': xpath_text(video
, './splash'),
137 'duration': int_or_none(xpath_text(video
, './totaltime')),
138 'view_count': int_or_none(xpath_text(video
, './views')),