This commit is contained in:
JSubelj 2024-06-16 16:47:21 +05:30 committed by GitHub
commit 3533e84ea5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 0 deletions

View File

@ -122,12 +122,21 @@ def _download_fragment(self, ctx, frag_url, info_dict, headers=None, request_dat
frag_resume_len = self.filesize_or_none(self.temp_name(fragment_filename)) frag_resume_len = self.filesize_or_none(self.temp_name(fragment_filename))
fragment_info_dict['frag_resume_len'] = ctx['frag_resume_len'] = frag_resume_len fragment_info_dict['frag_resume_len'] = ctx['frag_resume_len'] = frag_resume_len
execute_before_frag_dl = info_dict.get('_fragment_hook_before_dl')
if execute_before_frag_dl is not None and callable(execute_before_frag_dl):
execute_before_frag_dl(fragment_filename, fragment_info_dict, ctx)
success, _ = ctx['dl'].download(fragment_filename, fragment_info_dict) success, _ = ctx['dl'].download(fragment_filename, fragment_info_dict)
if not success: if not success:
return False return False
if fragment_info_dict.get('filetime'): if fragment_info_dict.get('filetime'):
ctx['fragment_filetime'] = fragment_info_dict.get('filetime') ctx['fragment_filetime'] = fragment_info_dict.get('filetime')
ctx['fragment_filename_sanitized'] = fragment_filename ctx['fragment_filename_sanitized'] = fragment_filename
execute_after_frag_dl = info_dict.get('_fragment_hook_after_dl')
if execute_after_frag_dl is not None and callable(execute_after_frag_dl):
execute_after_frag_dl(fragment_filename, fragment_info_dict, ctx)
return True return True
def _read_fragment(self, ctx): def _read_fragment(self, ctx):

View File

@ -403,6 +403,16 @@ class InfoExtractor:
extracted will not be available to output template and extracted will not be available to output template and
match_filter. So, only "comments" and "comment_count" are match_filter. So, only "comments" and "comment_count" are
currently allowed to be extracted via this method. currently allowed to be extracted via this method.
_fragment_hook_before_dl: A function to be called just before fragment is
downloaded. It should take three positional arguments:
'fragment_filename', 'fragment_info_dict' and 'ctx'.
This is useful for special sites that need to change
access cookies on every fragment/every few seconds.
_fragment_hook_after_dl: A function to be called right after fragment is
downloaded. It should take three positional arguments:
'fragment_filename', 'fragment_info_dict' and 'ctx'.
This is useful for special sites that need to change
access cookies on every fragment/every few seconds.
The following fields should only be used when the video belongs to some logical The following fields should only be used when the video belongs to some logical
chapter or section: chapter or section: