summaryrefslogtreecommitdiff
path: root/libmat/exiftool.py
diff options
context:
space:
mode:
authorjvoisin2015-11-02 18:23:57 +0100
committerjvoisin2015-11-02 18:23:57 +0100
commitd87711e172d215198f1831cad85e7bbdae727093 (patch)
tree31e0b979546cd9c314f336dffe082e9bf9ed6e5a /libmat/exiftool.py
parentf5a39ac0b6ddc9154b1b1b55d255074d6dd4eecd (diff)
Add support for TIFF file
Diffstat (limited to 'libmat/exiftool.py')
-rw-r--r--libmat/exiftool.py39
1 files changed, 27 insertions, 12 deletions
diff --git a/libmat/exiftool.py b/libmat/exiftool.py
index 0e1fefd..07ef06b 100644
--- a/libmat/exiftool.py
+++ b/libmat/exiftool.py
@@ -2,7 +2,6 @@
2""" 2"""
3 3
4import subprocess 4import subprocess
5
6import parser 5import parser
7 6
8 7
@@ -29,11 +28,12 @@ class ExiftoolStripper(parser.GenericParser):
29 if self.backup: 28 if self.backup:
30 self.create_backup_copy() 29 self.create_backup_copy()
31 # Note: '-All=' must be followed by a known exiftool option. 30 # Note: '-All=' must be followed by a known exiftool option.
32 subprocess.call(['exiftool', '-m', '-all=', 31 # Also, '-CommonIFD0' is needed for .tiff files
33 '-adobe=', '-overwrite_original', self.filename], 32 subprocess.call(['exiftool', '-all=', '-adobe=', '-exif:all=', '-Time:All=', '-m',
34 stdout=open('/dev/null')) 33 '-CommonIFD0=', '-overwrite_original', self.filename],
34 stdout=open('/dev/null'))
35 return True 35 return True
36 except: 36 except OSError:
37 return False 37 return False
38 38
39 def is_clean(self): 39 def is_clean(self):
@@ -48,7 +48,7 @@ class ExiftoolStripper(parser.GenericParser):
48 field name : value 48 field name : value
49 """ 49 """
50 output = subprocess.Popen(['exiftool', self.filename], 50 output = subprocess.Popen(['exiftool', self.filename],
51 stdout=subprocess.PIPE).communicate()[0] 51 stdout=subprocess.PIPE).communicate()[0]
52 meta = {} 52 meta = {}
53 for i in output.split('\n')[:-1]: # chop last char ('\n') 53 for i in output.split('\n')[:-1]: # chop last char ('\n')
54 key = i.split(':')[0].strip() 54 key = i.split(':')[0].strip()
@@ -61,19 +61,34 @@ class JpegStripper(ExiftoolStripper):
61 """ Care about jpeg files with help 61 """ Care about jpeg files with help
62 of exiftool 62 of exiftool
63 """ 63 """
64
64 def _set_allowed(self): 65 def _set_allowed(self):
65 self.allowed.update(['JFIF Version', 'Resolution Unit', 66 self.allowed.update(['JFIF Version', 'Resolution Unit',
66 'X Resolution', 'Y Resolution', 'Encoding Process', 67 'X Resolution', 'Y Resolution', 'Encoding Process',
67 'Bits Per Sample', 'Color Components', 'Y Cb Cr Sub Sampling']) 68 'Bits Per Sample', 'Color Components', 'Y Cb Cr Sub Sampling'])
68 69
69 70
70class PngStripper(ExiftoolStripper): 71class PngStripper(ExiftoolStripper):
71 """ Care about png files with help 72 """ Care about png files with help
72 of exiftool 73 of exiftool
73 """ 74 """
75
74 def _set_allowed(self): 76 def _set_allowed(self):
75 self.allowed.update(['Bit Depth', 'Color Type', 77 self.allowed.update(['Bit Depth', 'Color Type',
76 'Compression', 'Filter', 'Interlace', 'Palette', 78 'Compression', 'Filter', 'Interlace', 'Palette',
77 'Pixels Per Unit X', 79 'Pixels Per Unit X',
78 'Pixels Per Unit Y', 'Pixel Units', 'Significant Bits', 80 'Pixels Per Unit Y', 'Pixel Units', 'Significant Bits',
79 'Background Color', 'SRGB Rendering']) 81 'Background Color', 'SRGB Rendering'])
82
83
84class TiffStripper(ExiftoolStripper):
85 """ Care about tiff files with help
86 of exiftool
87 """
88
89 def _set_allowed(self):
90 # Todo: it would be awesome to detect the Resolution Unit, and to transform it in centimeter if it's in inches.
91 self.allowed.update(['X Resolution', 'Y Resolution', 'Compression', 'Bits Per Sample',
92 'Strip Offsets', 'Photometric Interpretation', 'Strip Byte Counts',
93 'Resolution Unit', 'Exif Byte Order', 'Samples Per Pixel', 'Rows Per Strip',
94 'Orientation'])