Compare commits

...

4 Commits

Author SHA1 Message Date
Dong Heon Hee
0b93d8a4b9
Merge 4eac04a761 into 0b7ec08816 2024-10-22 00:11:46 +02:00
hui1601
4eac04a761
[ie/chzzk] Clean up duplicate logic 2024-10-15 12:46:55 +09:00
hui1601
1de886665c
[ie/chzzk] Fix video error handling 2024-10-15 11:55:07 +09:00
hui1601
4f2ea35a9f
[ie/chzzk] Fix video(fast replay) download 2024-10-12 21:11:08 +09:00

View File

@ -146,19 +146,39 @@ class CHZZKVideoIE(InfoExtractor):
video_meta = self._download_json( video_meta = self._download_json(
f'https://api.chzzk.naver.com/service/v3/videos/{video_id}', video_id, f'https://api.chzzk.naver.com/service/v3/videos/{video_id}', video_id,
note='Downloading video info', errnote='Unable to download video info')['content'] note='Downloading video info', errnote='Unable to download video info')['content']
formats, subtitles = self._extract_mpd_formats_and_subtitles( video_status = video_meta.get('vodStatus')
f'https://apis.naver.com/neonplayer/vodplay/v1/playback/{video_meta["videoId"]}', video_id, video_live_date = video_meta.get('liveOpenDate')
query={ if video_live_date:
'key': video_meta['inKey'], live_status = 'was_live'
'env': 'real', else:
'lc': 'en_US', live_status = 'not_live'
'cpl': 'en_US',
}, note='Downloading video playback', errnote='Unable to download video playback')
if video_status == 'UPLOAD':
playback = self._parse_json(video_meta.get('liveRewindPlaybackJson'), video_id)
formats, subtitles = self._extract_m3u8_formats_and_subtitles(
traverse_obj(playback, ('media', 0, 'path')), video_id,
note='Downloading video playback', errnote='Unable to download video playback')
elif video_status == 'ABR_HLS':
formats, subtitles = self._extract_mpd_formats_and_subtitles(
f'https://apis.naver.com/neonplayer/vodplay/v1/playback/{video_meta.get("videoId")}', video_id,
query={
'key': video_meta['inKey'],
'env': 'real',
'lc': 'en_US',
'cpl': 'en_US',
}, note='Downloading video playback', errnote='Unable to download video playback')
else:
self.raise_no_formats(f'Unknown video status detected: "{video_status}"',
expected=True, video_id=video_id)
formats = []
subtitles = {}
if live_status == 'was_live':
live_status = 'post_live'
return { return {
'id': video_id, 'id': video_id,
'formats': formats, 'formats': formats,
'subtitles': subtitles, 'subtitles': subtitles,
'live_status': live_status,
**traverse_obj(video_meta, { **traverse_obj(video_meta, {
'title': ('videoTitle', {str}), 'title': ('videoTitle', {str}),
'thumbnail': ('thumbnailImageUrl', {url_or_none}), 'thumbnail': ('thumbnailImageUrl', {url_or_none}),