i18n, tests and more

This commit is contained in:
2024-05-25 22:12:11 +02:00
parent c21167f941
commit 161525fbb5
17 changed files with 117 additions and 58 deletions

View File

@@ -1,5 +1,6 @@
import magic
import sys
import os
import filetype
from PIL import Image
from PIL import ExifTags
@@ -9,7 +10,13 @@ from src.exif_data import ExifData
from src.mime_types import MimeTypes
video_formats = ["MP4", "MOV", "M4V", "MKV", "AVI", "WMV", "AVCHD", "WEBM", "MPEG"]
picture_formats = ["JPG", "JPEG", "PNG", "TIFF"]
picture_formats = ["JPG", "JPEG", "PNG"]
raw_formats = ["CR2", "RAF", "RW2", "ERF", "NRW", "NEF", "ARW", "RWZ", "EIP",
"DNG", "BAY", "DCR", "GPR", "RAW", "CRW", "3FR", "SR2", "K25",
"KC2", "MEF", "DNG", "CS1", "ORF", "MOS", "KDC", "CR3", "ARI",
"SRF", "SRW", "J6I", "FFF", "MRW", "MFW", "RWL", "X3F", "PEF",
"IIQ", "CXI", "NKSC", "MDC"]
key_words = ["DateTime", "Make"]
@@ -27,34 +34,40 @@ def is_file_picture(path:str):
else: return False
def get_image_meta_data(image_path):
# image_extension = str(image_path).split("/")[-1].split(".")
# TODO: Sort out videos
mime = MimeTypes(file_path=image_path)
if mime.is_video or mime.is_unsupported_file_type: return False
def handle_raw(image:str):
image_creation_time = os.path.getctime(filename=image)
print(image_creation_time)
img = Image.open(f"{image_path}")
def handle_image(image:str):
img = Image.open(image)
values = []
for tag, text in img.getexif().items():
if tag in ExifTags.TAGS: values.append([ExifTags.TAGS[tag], str(text)])
return filter_date_and_make(meta_tags=filter_data(value=values), image_path=image_path)
return filter_date_and_make(meta_tags=filter_data(values=values), image_path=image)
def handle_video(video:str):
pass
def get_image_meta_data(image_path):
image_extension = str(image_path).split("/")[-1].split(".")[1].upper()
# TODO: Sort out videos using mime type of file
# mime = MimeTypes(file_path=image_path)
if image_extension in picture_formats: return handle_image(image=image_path)
elif image_extension in video_formats: return handle_video(video=image_path)
elif image_extension in raw_formats: return handle_raw(image=image_path)
def filter_date_and_make(meta_tags:list, image_path):
day = None
month = None
year = None
time = None
print(meta_tags)
make = meta_tags[1][1]
make = meta_tags[0][1]
image_name = str(image_path).split("/")[-1]
_date = meta_tags[0]
time = _date[1].split(" ")[1]
_date = _date[1].split(" ")[0].split(":")
day = int(_date[2])
month = int(_date[1])
year = int(_date[0])
date_time = meta_tags[1][1].split(" ")
date, time = date_time[0].split(":"), date_time[1]
year, month, day = date[0], date[1], date[2]
exif_data_dict = {
"day": day,
@@ -69,13 +82,11 @@ def filter_date_and_make(meta_tags:list, image_path):
return ExifData(exif_data_dict)
def filter_data(value):
def filter_data(values):
"""Filters the data according to the meta tags from the keyword list"""
value_return = []
for k in key_words:
for v in value:
temp = v
if temp[0] == k:
value_return.append(v)
for value in values:
value_return.append(value) if value[0] in key_words else {}
return value_return