From ea37849eaeaab0f30b4324c14509a45fcf66437e Mon Sep 17 00:00:00 2001 From: Cedric Leporcq Date: Sat, 29 Jan 2022 15:19:37 +0100 Subject: [PATCH] Fix cache option for exiftool --- ordigi/media.py | 10 +++++++++- tests/test_media.py | 36 ++++++++++++++++++++++-------------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/ordigi/media.py b/ordigi/media.py index e363313..208fc47 100644 --- a/ordigi/media.py +++ b/ordigi/media.py @@ -96,6 +96,7 @@ class ReadExif(ExifMetadata): self, file_path, exif_metadata=None, + cache=True, ignore_tags=None, ): @@ -103,11 +104,14 @@ class ReadExif(ExifMetadata): # Options self.log = LOG.getChild(self.__class__.__name__) + self.cache = cache if exif_metadata: self.exif_metadata = exif_metadata - else: + elif self.cache: self.exif_metadata = self.get_exif_metadata_caching() + else: + self.exif_metadata = self.get_exif_metadata() def get_exif_metadata(self): """Get metadata from exiftool.""" @@ -264,11 +268,13 @@ class Media(ReadExif): album_from_folder=False, ignore_tags=None, interactive=False, + cache=True, use_date_filename=False, use_file_dates=False, ): super().__init__( file_path, + cache=True, ignore_tags=ignore_tags, ) @@ -278,6 +284,7 @@ class Media(ReadExif): self.interactive = interactive self.log = LOG.getChild(self.__class__.__name__) self.metadata = None + self.cache = cache self.use_date_filename = use_date_filename self.use_file_dates = use_file_dates @@ -651,6 +658,7 @@ class Medias: self.album_from_folder, self.ignore_tags, self.interactive, + self.exif_opt['cache'], self.exif_opt['use_date_filename'], self.exif_opt['use_file_dates'], ) diff --git a/tests/test_media.py b/tests/test_media.py index 25beea9..bd12fe4 100644 --- a/tests/test_media.py +++ b/tests/test_media.py @@ -1,12 +1,9 @@ from datetime import datetime -import os -import pytest from pathlib import Path import re -import shutil -import tempfile -from ordigi import constants +import pytest + from ordigi.media import Media from ordigi.exiftool import ExifTool, ExifToolCaching from ordigi.utils import get_date_from_string @@ -19,13 +16,23 @@ class TestMedia: @pytest.fixture(autouse=True) def setup_class(cls, sample_files_paths): cls.src_path, cls.file_paths = sample_files_paths - cls.ignore_tags = ('EXIF:CreateDate', 'File:FileModifyDate', - 'File:FileAccessDate', 'EXIF:Make', 'Composite:LightValue') + cls.ignore_tags = ( + 'EXIF:CreateDate', + 'File:FileModifyDate', + 'File:FileAccessDate', + 'EXIF:Make', + 'Composite:LightValue' + ) def get_media(self): for file_path in self.file_paths: - self.exif_data = ExifTool(file_path).asdict() - yield file_path, Media(file_path, self.src_path, album_from_folder=True, ignore_tags=self.ignore_tags) + yield file_path, Media( + file_path, + self.src_path, + album_from_folder=True, + cache=False, + ignore_tags=self.ignore_tags, + ) def test_get_metadata(self, tmp_path): for file_path, media in self.get_media(): @@ -33,7 +40,7 @@ class TestMedia: for root in self.src_path, tmp_path: media.get_metadata(root) assert isinstance(media.metadata, dict), media.metadata - #check if all tags key are present + # check if all tags key are present for tags_key, tags in media.tags_keys.items(): assert tags_key in media.metadata for tag in tags: @@ -52,7 +59,7 @@ class TestMedia: assert value is None if key == 'album': - for album in media.get_key_values('album'): + for album in media.get_key_values('album'): if album is not None and album != '': assert value == album break @@ -68,14 +75,15 @@ class TestMedia: has_exif_data = True assert media.has_exif_data() break - if has_exif_data == False: + if not has_exif_data: assert not media.has_exif_data() def test_get_date_media(self): for file_path in self.file_paths: exif_data = ExifToolCaching(str(file_path)).asdict() - media = Media(file_path, self.src_path, use_date_filename=True, - use_file_dates=True) + media = Media( + file_path, self.src_path, use_date_filename=True, use_file_dates=True + ) media.get_metadata(self.src_path) date_media = media.get_date_media()