1
0
Fork 0
mirror of https://github.com/ytdl-org/youtube-dl.git synced 2024-11-25 11:41:52 +00:00

Add post_hooks option to YoutubeDL.py

This commit is contained in:
Alex Merkel 2020-12-29 16:03:07 +01:00
parent 479cc6d5a1
commit f8d189d8bd
No known key found for this signature in database
GPG key ID: B8F579CC2A6662A2

View file

@ -231,6 +231,9 @@ class YoutubeDL(object):
youtube_dl/postprocessor/__init__.py for a list.
as well as any further keyword arguments for the
postprocessor.
post_hooks: A list of functions that get called as the final step
for each video file, after all postprocessors have been
called. The filename will be passed as the only argument.
progress_hooks: A list of functions that get called on download
progress, with a dictionary with the entries
* status: One of "downloading", "error", or "finished".
@ -347,6 +350,7 @@ class YoutubeDL(object):
self._ies = []
self._ies_instances = {}
self._pps = []
self._post_hooks = []
self._progress_hooks = []
self._download_retcode = 0
self._num_downloads = 0
@ -429,6 +433,9 @@ class YoutubeDL(object):
pp = pp_class(self, **compat_kwargs(pp_def))
self.add_post_processor(pp)
for ph in self.params.get('post_hooks', []):
self.add_post_hook(ph)
for ph in self.params.get('progress_hooks', []):
self.add_progress_hook(ph)
@ -481,6 +488,10 @@ class YoutubeDL(object):
self._pps.append(pp)
pp.set_downloader(self)
def add_post_hook(self, ph):
"""Add the post hook"""
self._post_hooks.append(ph)
def add_progress_hook(self, ph):
"""Add the progress hook (currently only for the file downloader)"""
self._progress_hooks.append(ph)
@ -2011,6 +2022,12 @@ class YoutubeDL(object):
except (PostProcessingError) as err:
self.report_error('postprocessing: %s' % str(err))
return
try:
for ph in self._post_hooks:
ph(filename)
except Exception as err:
self.report_error('post hooks: %s' % str(err))
return
self.record_download_archive(info_dict)
def download(self, url_list):