from __future__ import unicode_literals
-from ..utils import PostProcessingError
+import os
+import shlex
+
+from ..utils import (
+ PostProcessingError,
+ encodeFilename,
+)
class PostProcessor(object):
of the chain is reached.
PostProcessor objects follow a "mutual registration" process similar
- to InfoExtractor objects.
+ to InfoExtractor objects. And it can receive parameters from CLI trough
+ --postprocessor-args.
"""
_downloader = None
- def __init__(self, downloader=None):
+ def __init__(self, downloader=None, extra_cmd_args=None):
+ self._extra_cmd_args = shlex.split(extra_cmd_args or '')
self._downloader = downloader
def set_downloader(self, downloader):
one has an extra field called "filepath" that points to the
downloaded file.
- This method returns a tuple, the first element of which describes
- whether the original file should be kept (i.e. not deleted - None for
- no preference), and the second of which is the updated information.
+ This method returns a tuple, the first element is a list of the files
+ that can be deleted, and the second of which is the updated
+ information.
In addition, this method may raise a PostProcessingError
exception if post processing fails.
"""
- return None, information # by default, keep file and do nothing
+ return [], information # by default, keep file and do nothing
+
+ def try_utime(self, path, atime, mtime, errnote='Cannot update utime of file'):
+ try:
+ os.utime(encodeFilename(path), (atime, mtime))
+ except Exception:
+ self._downloader.report_warning(errnote)
class AudioConversionError(PostProcessingError):