diff --git a/libmat2/images.py b/libmat2/images.py index 03cecd3..153a83d 100644 --- a/libmat2/images.py +++ b/libmat2/images.py @@ -6,7 +6,7 @@ import cairo import gi gi.require_version('GdkPixbuf', '2.0') -from gi.repository import GdkPixbuf +from gi.repository import GdkPixbuf, GLib from . import exiftool @@ -50,15 +50,21 @@ class GdkPixbufAbstractParser(exiftool.ExiftoolParser): def __init__(self, filename): super().__init__(filename) - if imghdr.what(filename) != self._type: # better safe than sorry + # we can't use imghdr here because of https://bugs.python.org/issue28591 + try: + GdkPixbuf.Pixbuf.new_from_file(self.filename) + except GLib.GError: raise ValueError def remove_all(self) -> bool: + if self.lightweight_cleaning: + return self._lightweight_cleanup() + _, extension = os.path.splitext(self.filename) pixbuf = GdkPixbuf.Pixbuf.new_from_file(self.filename) if extension.lower() == '.jpg': extension = '.jpeg' # gdk is picky - pixbuf.savev(self.output_filename, extension[1:], [], []) + pixbuf.savev(self.output_filename, type=extension[1:], option_keys=[], option_values=[]) return True diff --git a/tests/test_lightweigh_cleaning.py b/tests/test_lightweigh_cleaning.py index 7af31ad..5fd7ad6 100644 --- a/tests/test_lightweigh_cleaning.py +++ b/tests/test_lightweigh_cleaning.py @@ -4,7 +4,7 @@ import unittest import shutil import os -from libmat2 import pdf, images +from libmat2 import pdf, images, torrent class TestLightWeightCleaning(unittest.TestCase): def test_pdf(self): @@ -63,3 +63,20 @@ class TestLightWeightCleaning(unittest.TestCase): os.remove('./tests/data/clean.jpg') os.remove('./tests/data/clean.cleaned.jpg') + + def test_torrent(self): + shutil.copy('./tests/data/dirty.torrent', './tests/data/clean.torrent') + p = torrent.TorrentParser('./tests/data/clean.torrent') + + meta = p.get_meta() + self.assertEqual(meta['created by'], b'mktorrent 1.0') + + p.lightweight_cleaning = True + ret = p.remove_all() + self.assertTrue(ret) + + p = torrent.TorrentParser('./tests/data/clean.cleaned.torrent') + self.assertEqual(p.get_meta(), {}) + + os.remove('./tests/data/clean.torrent') + os.remove('./tests/data/clean.cleaned.torrent')