From bcc51dc42c45977b0bfd18958aa0bfca5822617d Mon Sep 17 00:00:00 2001 From: Axel Haustant Date: Wed, 10 Jul 2013 09:57:23 +0200 Subject: [PATCH] Proper logging in optimize_images - log currently processed file on INFO - display command output on DEBUG - bonus: reduced the number of loops --- optimize_images/optimize_images.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/optimize_images/optimize_images.py b/optimize_images/optimize_images.py index 87fea71..3087837 100644 --- a/optimize_images/optimize_images.py +++ b/optimize_images/optimize_images.py @@ -16,11 +16,16 @@ from pelican import signals logger = logging.getLogger(__name__) +# Display command output on DEBUG and TRACE +SHOW_OUTPUT = logger.getEffectiveLevel() <= logging.DEBUG + # A list of file types with their respective commands -COMMANDS = [ - ('.jpg', 'jpegtran -copy none -optimize -outfile "{filename}" "{filename}"'), - ('.png', 'optipng --quiet "{filename}"'), -] +COMMANDS = { + # '.ext': ('command {flags} {filename', 'silent_flag', 'verbose_flag') + '.jpg': ('jpegtran {flags} -copy none -optimize -outfile "{filename}" "{filename}"', '', '-v'), + '.png': ('optipng {flags} "{filename}"', '--quiet', ''), +} + def optimize_images(pelican): """ @@ -30,7 +35,8 @@ def optimize_images(pelican): """ for dirpath, _, filenames in os.walk(pelican.settings['OUTPUT_PATH']): for name in filenames: - optimize(dirpath, name) + if os.path.splitext(name)[1] in COMMANDS.keys(): + optimize(dirpath, name) def optimize(dirpath, filename): """ @@ -40,11 +46,14 @@ def optimize(dirpath, filename): :param dirpath: Path of the file to be optimzed :param name: A file name to be optimized """ - for extension, command in COMMANDS: - if filename.endswith(extension): - filepath = os.path.join(dirpath, filename) - command = command.format(filename=filepath) - call(command, shell=True) + filepath = os.path.join(dirpath, filename) + logger.info('optimizing %s', filepath) + + ext = os.path.splitext(filename)[1] + command, silent, verbose = COMMANDS[ext] + flags = verbose if SHOW_OUTPUT else silent + command = command.format(filename=filepath, flags=flags) + call(command, shell=True) def register():