diff --git a/yt_dlp/extractor/kenh14.py b/yt_dlp/extractor/kenh14.py index 13f174b3cbf0..2183d5646e58 100644 --- a/yt_dlp/extractor/kenh14.py +++ b/yt_dlp/extractor/kenh14.py @@ -66,9 +66,6 @@ class Kenh14VideoIE(InfoExtractor): 'duration': 198.88, 'timestamp': 1729741590, }, - 'expected_warnings': [ - 'Failed to download m3u8 information: HTTP Error 404: NOT FOUND', - ], }] def _real_extract(self, url): @@ -82,6 +79,22 @@ def _real_extract(self, url): 'https://api.kinghub.vn/video/api/v1/detailVideoByGet?FileName={}'.format( 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 { **traverse_obj(metadata, { 'duration': ('duration', {parse_duration}), @@ -94,10 +107,8 @@ def _real_extract(self, url): traverse_obj(metadata, ('title', {strip_or_none})) or clean_html(self._og_search_title(webpage)) or clean_html(get_element_by_class('vdbw-title', webpage))), - 'formats': [ - {'url': f'https://{direct_url}', 'format_id': 'http'}, - *self._extract_m3u8_formats(f'https://{direct_url}/master.m3u8', video_id, fatal=False), - ], + 'formats': formats, + 'subtitles': subtitles, 'description': ( clean_html(self._og_search_description(webpage)) or clean_html(get_element_by_class('vdbw-sapo', webpage))),