fix bug when meta tags aren't in the correct order

This commit is contained in:
2024-06-05 01:22:35 +02:00
parent f4ace7efa3
commit c4fea238b3
2 changed files with 10 additions and 23 deletions

View File

@@ -17,8 +17,6 @@ raw_formats = ["CR2", "RAF", "RW2", "ERF", "NRW", "NEF", "ARW", "RWZ", "EIP",
"SRF", "SRW", "J6I", "FFF", "MRW", "MFW", "RWL", "X3F", "PEF", "SRF", "SRW", "J6I", "FFF", "MRW", "MFW", "RWL", "X3F", "PEF",
"IIQ", "CXI", "NKSC", "MDC"] "IIQ", "CXI", "NKSC", "MDC"]
key_words = ["DateTime", "Make"]
def is_file_video(path:str): def is_file_video(path:str):
mime = magic.Magic(mime=True) mime = magic.Magic(mime=True)
@@ -36,15 +34,14 @@ def is_file_picture(path:str):
def handle_raw(image:str): def handle_raw(image:str):
image_creation_time = os.path.getctime(filename=image) image_creation_time = os.path.getctime(filename=image)
print(image_creation_time) # print(image_creation_time)
def handle_image(image:str): def handle_image(image:str):
img = Image.open(image) img = Image.open(image)
values = [] values = []
for tag, text in img.getexif().items(): for tag, text in img.getexif().items(): values.append([ExifTags.TAGS[tag], str(text)]) if tag in ExifTags.TAGS else {}
if tag in ExifTags.TAGS: values.append([ExifTags.TAGS[tag], str(text)]) return filter_date_and_make(values, image_path=image)
return filter_date_and_make(meta_tags=filter_data(values=values), image_path=image)
def handle_video(video:str): def handle_video(video:str):
@@ -52,7 +49,7 @@ def handle_video(video:str):
def get_image_meta_data(image_path): def get_image_meta_data(image_path):
image_extension = str(image_path).split("/")[-1].split(".")[1].upper() image_extension = str(image_path).split(os.sep)[-1].split('.')[1].upper()
# TODO: Sort out videos using mime type of file # TODO: Sort out videos using mime type of file
# mime = MimeTypes(file_path=image_path) # mime = MimeTypes(file_path=image_path)
@@ -61,12 +58,13 @@ def get_image_meta_data(image_path):
elif image_extension in raw_formats: return handle_raw(image=image_path) elif image_extension in raw_formats: return handle_raw(image=image_path)
def filter_date_and_make(meta_tags:list, image_path): def filter_date_and_make(meta_tags:list, image_path:str):
make = meta_tags[0][1] make = next((tag[1] for tag in meta_tags if tag[0] == 'Make'), None)
image_name = str(image_path).split("/")[-1] date_time = next((tag[1] for tag in meta_tags if tag[0] == 'DateTime'), None)
date_time = meta_tags[1][1].split(" ") date_time = date_time.split(' ') # 'YYYY:MM:DD H:M:S'
date, time = date_time[0].split(":"), date_time[1] image_name = str(image_path).split(os.sep)[-1]
date, time = date_time[0].split(':'), date_time[1]
year, month, day = date[0], date[1], date[2] year, month, day = date[0], date[1], date[2]
exif_data_dict = { exif_data_dict = {
@@ -82,14 +80,6 @@ def filter_date_and_make(meta_tags:list, image_path):
return ExifData(exif_data_dict) return ExifData(exif_data_dict)
def filter_data(values):
"""Filters the data according to the meta tags from the keyword list"""
value_return = []
for value in values:
value_return.append(value) if value[0] in key_words else {}
return value_return
def get_meta_data(images: list): def get_meta_data(images: list):
exif_data_list = [] exif_data_list = []
for image in images: for image in images:

View File

@@ -3,9 +3,6 @@ import os
from src.meta_data_handler import get_meta_data from src.meta_data_handler import get_meta_data
from src.meta_data_handler import get_image_meta_data from src.meta_data_handler import get_image_meta_data
from src.meta_data_handler import filter_data
from src.meta_data_handler import filter_date_and_make
from src.meta_data_handler import is_file_video
from src.scan_folder import recursive_scan_folder from src.scan_folder import recursive_scan_folder
TEST_IMAGES = "tests/test_files" TEST_IMAGES = "tests/test_files"