Compare commits

..

1 Commits

Author SHA1 Message Date
krichbanana
9f95c04000
Merge 11edfc8e1f into 52c0ffe40a 2024-11-16 23:50:05 +00:00

View File

@ -66,6 +66,9 @@ class Kenh14VideoIE(InfoExtractor):
'duration': 198.88, 'duration': 198.88,
'timestamp': 1729741590, 'timestamp': 1729741590,
}, },
'expected_warnings': [
'Failed to download m3u8 information: HTTP Error 404: NOT FOUND',
],
}] }]
def _real_extract(self, url): def _real_extract(self, url):
@ -79,22 +82,6 @@ class Kenh14VideoIE(InfoExtractor):
'https://api.kinghub.vn/video/api/v1/detailVideoByGet?FileName={}'.format( 'https://api.kinghub.vn/video/api/v1/detailVideoByGet?FileName={}'.format(
remove_start(direct_url, 'kenh14cdn.com/')), video_id, fatal=False) remove_start(direct_url, 'kenh14cdn.com/')), video_id, fatal=False)
formats = [{'url': f'https://{direct_url}', 'format_id': 'http', 'quality': 1}]
subtitles = {}
video_data = self._download_json(
f'https://{direct_url}.json', video_id, note='Downloading video data', fatal=False)
if video_data:
if hls_url := video_data.get('hls'):
fmts, subs = self._extract_m3u8_formats_and_subtitles(
hls_url, video_id, m3u8_id='hls', fatal=False)
formats.extend(fmts)
self._merge_subtitles(subs, target=subtitles)
if dash_url := video_data.get('mpd'):
fmts, subs = self._extract_mpd_formats_and_subtitles(
dash_url, video_id, mpd_id='dash', fatal=False)
formats.extend(fmts)
self._merge_subtitles(subs, target=subtitles)
return { return {
**traverse_obj(metadata, { **traverse_obj(metadata, {
'duration': ('duration', {parse_duration}), 'duration': ('duration', {parse_duration}),
@ -107,8 +94,10 @@ class Kenh14VideoIE(InfoExtractor):
traverse_obj(metadata, ('title', {strip_or_none})) traverse_obj(metadata, ('title', {strip_or_none}))
or clean_html(self._og_search_title(webpage)) or clean_html(self._og_search_title(webpage))
or clean_html(get_element_by_class('vdbw-title', webpage))), or clean_html(get_element_by_class('vdbw-title', webpage))),
'formats': formats, 'formats': [
'subtitles': subtitles, {'url': f'https://{direct_url}', 'format_id': 'http'},
*self._extract_m3u8_formats(f'https://{direct_url}/master.m3u8', video_id, fatal=False),
],
'description': ( 'description': (
clean_html(self._og_search_description(webpage)) clean_html(self._og_search_description(webpage))
or clean_html(get_element_by_class('vdbw-sapo', webpage))), or clean_html(get_element_by_class('vdbw-sapo', webpage))),
@ -152,8 +141,8 @@ class Kenh14PlaylistIE(InfoExtractor):
return self.playlist_from_matches( return self.playlist_from_matches(
get_elements_html_by_class('video-item', webpage), playlist_id, get_elements_html_by_class('video-item', webpage), playlist_id,
(clean_html(get_element_by_class('name', category_detail)) or unescapeHTML(embed_info.get('name'))), (clean_html(get_element_by_class('name', category_detail)) or unescapeHTML(embed_info.get('name'))),
getter=lambda x: 'https://video.kenh14.vn/video/video-{}.chn'.format(extract_attributes(x)['data-id']), getter=lambda x: 'https://video.kenh14.vn/video/{}.chn'.format(extract_attributes(x)['data-id']),
ie=Kenh14VideoIE, playlist_description=( ie=Kenh14VideoIE.ie_key(), playlist_description=(
clean_html(get_element_by_class('description', category_detail)) clean_html(get_element_by_class('description', category_detail))
or unescapeHTML(embed_info.get('alternateName'))), or unescapeHTML(embed_info.get('alternateName'))),
thumbnail=traverse_obj( thumbnail=traverse_obj(