fix bug when meta tags aren't in the correct order
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user