Skip to content
Snippets Groups Projects
Commit d4d6f316 authored by Julien (jvoisin) Voisin's avatar Julien (jvoisin) Voisin
Browse files

Add support for jpeg

parent 7ad9ff08
No related branches found
No related tags found
No related merge requests found
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
tests/data/dirty.jpg

136 KiB

......@@ -5,7 +5,7 @@ import shutil
import os
from src import parsers
from src.parsers import pdf, png
from src.parsers import pdf, png, jpg
class TestGetMeta(unittest.TestCase):
def test_pdf(self):
......@@ -20,6 +20,11 @@ class TestGetMeta(unittest.TestCase):
self.assertEqual(meta['Comment'], 'This is a comment, be careful!')
self.assertEqual(meta['ModifyDate'], "2018:03:20 21:59:25")
def test_jpg(self):
p = jpg.JPGParser('./tests/data/dirty.jpg')
meta = p.get_meta()
self.assertEqual(meta['Comment'], 'Created with GIMP')
class TestCleaning(unittest.TestCase):
def test_pdf(self):
shutil.copy('./tests/data/dirty.pdf', './tests/data/clean.pdf')
......@@ -51,3 +56,19 @@ class TestCleaning(unittest.TestCase):
self.assertEqual(p.get_meta(), {})
os.remove('./tests/data/clean.png')
def test_jpg(self):
shutil.copy('./tests/data/dirty.jpg', './tests/data/clean.jpg')
p = jpg.JPGParser('./tests/data/clean.jpg')
meta = p.get_meta()
self.assertEqual(meta['Comment'], 'Created with GIMP')
ret = p.remove_all()
self.assertTrue(ret)
p = jpg.JPGParser('./tests/data/clean.jpg.cleaned')
self.assertEqual(p.get_meta(), {})
os.remove('./tests/data/clean.jpg')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment