Fixed format checks for loading exif data

This commit is contained in:
Joel Collins 2019-02-18 17:25:50 +00:00
parent e8fb3b378c
commit 184e3d9558

View file

@ -3,7 +3,6 @@ import io
import os import os
import glob import glob
import datetime import datetime
import copy
import yaml import yaml
import logging import logging
from PIL import Image from PIL import Image
@ -47,6 +46,16 @@ def pull_usercomment_dict(filepath):
def extract_with_priority(key, best_dict, backup_dict): def extract_with_priority(key, best_dict, backup_dict):
"""
Extracts a value from one of two dictionaries, prioritising one over the other.
Second dictionary is used only if the key doesn't exist in the first.
Args:
key: Key to search for
best_dict: Ideal dictionary to use
backup_dict: Fallback dictionary
"""
if key in best_dict: if key in best_dict:
return best_dict[key] return best_dict[key]
elif key in backup_dict: elif key in backup_dict:
@ -75,7 +84,7 @@ def capture_from_dict(capture_dict):
capture.split_file_path(capture.file) capture.split_file_path(capture.file)
capture.temporary = capture_dict['temporary'] capture.temporary = capture_dict['temporary']
if capture.format in EXIF_FORMATS: if capture.format.upper() in EXIF_FORMATS:
md_exif = pull_usercomment_dict(capture.file) md_exif = pull_usercomment_dict(capture.file)
else: else:
md_exif = {} md_exif = {}
@ -236,10 +245,11 @@ class CaptureObject(object):
Args: Args:
filepath (str): String of the full file path, including file format extension filepath (str): String of the full file path, including file format extension
""" """
self.filefolder, self.filename = os.path.split( self.filefolder, self.filename = os.path.split(filepath) # Split the full file path into a folder and a filename
filepath) # Split the full file path into a folder and a filename
self.basename = os.path.splitext(self.filename)[0] # Split the filename out from it's file extension self.basename = os.path.splitext(self.filename)[0] # Split the filename out from it's file extension
self.metadataname = "{}.yaml".format(self.basename)
if not self.format:
self.format = self.filename.split('.')[-1]
def lock(self): def lock(self):
"""Set locked flag to True.""" """Set locked flag to True."""
@ -275,10 +285,10 @@ class CaptureObject(object):
Add a new tag to the ``tags`` list attribute. Add a new tag to the ``tags`` list attribute.
Args: Args:
tag (list): List of tags to be added tags (list): List of tags to be added
""" """
for tag in tags: for tag in tags:
if not tag in self.tags: if tag not in self.tags:
self.tags.append(tag) self.tags.append(tag)
self.save_metadata() self.save_metadata()
@ -293,6 +303,8 @@ class CaptureObject(object):
if tag in self.tags: if tag in self.tags:
self.tags = [new_tag for new_tag in self.tags if new_tag != tag] self.tags = [new_tag for new_tag in self.tags if new_tag != tag]
self.save_metadata()
# HANDLE METADATA # HANDLE METADATA
def put_metadata(self, data: dict) -> None: def put_metadata(self, data: dict) -> None:
@ -311,7 +323,10 @@ class CaptureObject(object):
""" """
global EXIF_FORMATS global EXIF_FORMATS
if self.format in EXIF_FORMATS and self.file_exists: print(self.format)
print(EXIF_FORMATS)
if self.format.upper() in EXIF_FORMATS and self.file_exists:
logging.debug("Writing exif data to capture file") logging.debug("Writing exif data to capture file")
# Extract current Exif data # Extract current Exif data
exif_dict = piexif.load(self.file) exif_dict = piexif.load(self.file)