From d4d6f31655fb578825dbf1e639f165c7ad3eb17f Mon Sep 17 00:00:00 2001 From: jvoisin Date: Sun, 25 Mar 2018 15:09:12 +0200 Subject: Add support for jpeg --- src/parsers/jpg.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/parsers/jpg.py (limited to 'src') diff --git a/src/parsers/jpg.py b/src/parsers/jpg.py new file mode 100644 index 0000000..d1a4439 --- /dev/null +++ b/src/parsers/jpg.py @@ -0,0 +1,30 @@ +import subprocess +import json + +import gi +gi.require_version('GdkPixbuf', '2.0') +from gi.repository import GdkPixbuf + +from . import abstract + +class JPGParser(abstract.AbstractParser): + mimetypes = {'image/jpg', } + meta_whitelist = {'SourceFile', 'ExifToolVersion', 'FileName', + 'Directory', 'FileSize', 'FileModifyDate', 'FileAccessDate', + "FileInodeChangeDate", 'FilePermissions', 'FileType', + 'FileTypeExtension', 'MIMEType', 'ImageWidth', + 'ImageSize', 'BitsPerSample', 'ColorComponents', 'EncodingProcess', + 'JFIFVersion', 'ResolutionUnit', 'XResolution', 'YCbCrSubSampling', + 'YResolution', 'Megapixels', 'ImageHeight'} + + def get_meta(self): + out = subprocess.check_output(['exiftool', '-json', self.filename]) + meta = json.loads(out)[0] + for key in self.meta_whitelist: + meta.pop(key, None) + return meta + + def remove_all(self): + pixbuf = GdkPixbuf.Pixbuf.new_from_file(self.filename) + pixbuf.savev(self.output_filename, "jpeg", ["quality"], ["100"]) + return True -- cgit v1.3