3 from .common
import InfoExtractor
4 from ..utils
import determine_ext
, js_to_json
, mimetype2ext
, traverse_obj
7 class TV24UAVideoIE(InfoExtractor
):
8 _VALID_URL
= r
'https?://24tv\.ua/news/showPlayer\.do.*?(?:\?|&)objectId=(?P<id>\d+)'
9 _EMBED_REGEX
= [rf
'<iframe[^>]+?src=["\']?(?P<url>{_VALID_URL})["\']?']
12 'url': 'https://24tv.ua/news/showPlayer.do?objectId=2074790&videoUrl=2022/07/2074790&w=640&h=360',
16 'title': 'У Харкові ворожа ракета прилетіла в будинок, де слухали пісні про "офіцерів-росіян"',
17 'thumbnail': r
're:^https?://.*\.jpe?g',
20 'url': 'https://24tv.ua/news/showPlayer.do?videoUrl=2022/07/2074790&objectId=2074790&w=640&h=360',
21 'only_matching': True,
26 # iframe embed created from share menu.
27 'url': 'data:text/html,%3Ciframe%20src=%22https://24tv.ua/news/showPlayer.do?objectId=1886193&videoUrl'
28 '=2022/03/1886193&w=640&h=360%22%20width=%22640%22%20height=%22360%22%20frameborder=%220%22'
29 '%20scrolling=%22no%22%3E%3C/iframe%3E',
33 'title': 'Росіяни руйнують Бородянку на Київщині та стріляють з літаків по мешканцях: шокуючі фото',
34 'thumbnail': r
're:^https?://.*\.jpe?g',
38 'url': 'https://24tv.ua/vipalyuyut-nashi-mista-sela-dsns-pokazali-motoroshni-naslidki_n1883966',
42 'title': 'Випалюють наші міста та села, – моторошні наслідки обстрілів на Чернігівщині',
43 'thumbnail': r
're:^https?://.*\.jpe?g',
45 'params': {'allowed_extractors': ['Generic', '24tv.ua']},
49 def _real_extract(self
, url
):
50 video_id
= self
._match
_id
(url
)
51 webpage
= self
._download
_webpage
(url
, video_id
)
55 for j
in re
.findall(r
'vPlayConfig\.sources\s*=\s*(?P<json>\[{\s*(?s:.+?)\s*}])', webpage
):
56 sources
= self
._parse
_json
(j
, video_id
, fatal
=False, ignore_extra
=True, transform_source
=js_to_json
, errnote
='') or []
57 for source
in sources
:
58 if mimetype2ext(traverse_obj(source
, 'type')) == 'm3u8':
59 f
, s
= self
._extract
_m
3u8_formats
_and
_subtitles
(source
['src'], video_id
)
61 self
._merge
_subtitles
(subtitles
, s
)
65 'ext': determine_ext(source
['src']),
67 thumbnail
= traverse_obj(
69 r
'var\s*vPlayConfig\s*=\s*', webpage
, 'thumbnail',
70 video_id
, default
=None, transform_source
=js_to_json
), 'poster')
74 'subtitles': subtitles
,
75 'thumbnail': thumbnail
or self
._og
_search
_thumbnail
(webpage
),
76 'title': self
._generic
_title
('', webpage
),
77 'description': self
._og
_search
_description
(webpage
, default
=None),