From d84472b95e274433d7f0ed643117bcf8de344e53 Mon Sep 17 00:00:00 2001 From: "Antonio J. Delgado" Date: Mon, 2 May 2022 16:36:05 +0300 Subject: [PATCH] split processing metadata --- image_classifier/image_classifier.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/image_classifier/image_classifier.py b/image_classifier/image_classifier.py index 4f478c9..27a97a4 100755 --- a/image_classifier/image_classifier.py +++ b/image_classifier/image_classifier.py @@ -69,34 +69,37 @@ class image_classifier: if not entry.name.startswith('.') and entry.is_file(): self.process_file(os.path.join(directory, entry.name)) + def process_metadata(self, file): + self.metadata = pyexiv2.ImageMetadata(file) + self.metadata.read() + if 'Xmp.iptcExt.PersonInImage' in self.metadata.xmp_keys: + self._log.debug(f"People (before): \ +{self.metadata['Xmp.iptcExt.PersonInImage'].raw_value} \ +(type: {type(self.metadata['Xmp.iptcExt.PersonInImage'].raw_value)})") + def process_file(self, file): ''' Process a file, find faces, add EXIF information and move it to the folder of the day''' self._log.debug(f"Looking for faces in file '{file}'...") - folder_date = None + folder_date = 'unknown-time' dirname = os.path.dirname(os.path.realpath(file)) filename = os.path.basename(file) if not os.access(file, os.R_OK): self._log.error(f"The file '{file}' is not readable.") else: if self.is_image(file): - self.metadata = pyexiv2.ImageMetadata(file) - self.metadata.read() + self.metadata = self.process_metadata(file) people = self.find_faces(file) if people: self._log.debug(f"Found {len(people)} known people in the image.") self._log.debug(json.dumps(people, indent=2)) - if 'Xmp.iptcExt.PersonInImage' in self.metadata.xmp_keys: - self._log.debug(f"People (before): \ -{self.metadata['Xmp.iptcExt.PersonInImage'].raw_value} \ -(type: {type(self.metadata['Xmp.iptcExt.PersonInImage'].raw_value)})") self.append_people(file, people) if 'Exif.Photo.DateTimeOriginal' in self.metadata.exif_keys: original_date = self.metadata['Exif.Photo.DateTimeOriginal'].value self._log.debug(f"File creation time: {original_date} \ (type: {type(original_date)})") folder_date = original_date.strftime('%Y.%m.%d') - if not folder_date: + if folder_date == 'unknown-time': match = re.search(r'(?P20[0-9]{2})[\-/\._]?\ (?P[0-1]?[0-9])[\-/\._]?(?P[0-3]?[0-9])', filename) if match: @@ -108,8 +111,6 @@ class image_classifier: if match: folder_date = f"{match.group('year')}.{match.group('month')}.\ {match.group('day')}" - else: - folder_date = 'unknown-time' folder = os.path.join(dirname, folder_date, filename) self._log.debug(f"Time based folder name section '{folder_date}'") new_path = os.path.dirname(folder)