54 percent... wow

This commit is contained in:
2023-12-08 00:44:12 +01:00
parent 9ae71af1aa
commit 0012c52adf
11 changed files with 115 additions and 57 deletions

View File

@@ -1,63 +1,66 @@
import magic
import sys
from PIL import Image
from PIL import ExifTags
sys.path.append("../")
from src.exif_data import ExifData
video_formats = ["MP4", "MOV", "M4V", "MKV", "AVI", "WMV", "AVCHD", "WEBM", "MPEG"]
picture_formats = ["JPG", "JPEG", "PNG", "TIFF"]
key_words = ["DateTime", "Make"]
class MetadataHandler:
"""This class is for getting the meta data from a image or a video"""
def __init__(self) -> None:
self.__videoFormats = ["MP4", "MOV", "M4V", "MKV", "AVI", "WMV", "AVCHD", "WEBM", "MPEG"]
self.__pictureFormats = ["JPG", "JPEG", "PNG", "TIFF"]
self.__keyWords = ["DateTime", "Make"]
def is_file_video(path:str):
mime = magic.Magic(mime=True)
file = mime.from_file(path)
if file.find('video') != -1: return True
else: return False
def __is_file_video(self, path:str):
mime = magic.Magic(mime=True)
file = mime.from_file(path)
if file.find('video') != -1: return True
else: return False
def __get_image_meta_data(self, image_path):
image_extension = str(image_path).split("/")[-1].split(".")
# TODO: Sort out videos
img = Image.open(f"{image_path}")
values = []
for tag, text in img.getexif().items():
if tag in ExifTags.TAGS:
if image_extension[1].upper() in self.__pictureFormats:
values.append(ExifTags.TAGS[tag] + "|" + str(text))
return self.__filter_date_and_make(metaTags=self.__filter_data(value=values), imagePath=image_path)
def get_image_meta_data(image_path):
image_extension = str(image_path).split("/")[-1].split(".")
# TODO: Sort out videos
img = Image.open(f"{image_path}")
values = []
for tag, text in img.getexif().items():
if tag in ExifTags.TAGS:
if image_extension[1].upper() in picture_formats:
values.append(ExifTags.TAGS[tag] + "|" + str(text))
return filter_date_and_make(meta_tags=filter_data(value=values), image_path=image_path)
def __filter_date_and_make(self, metaTags: list, imagePath):
day = None
month = None
year = None
time = None
make = str(metaTags[1]).split("|")[1]
image_name = str(imagePath).split("/")[-1]
_date = str(metaTags[0]).split("|")
time = _date[1].split(" ")[1]
_date = _date[1].split(" ")[0].split(":")
day = _date[2]
month = _date[1]
year = _date[0]
def filter_date_and_make(meta_tags:list, image_path):
day = None
month = None
year = None
time = None
make = str(meta_tags[1]).split("|")[1]
image_name = str(image_path).split("/")[-1]
return ExifData(image_path=imagePath, image_name=image_name, day=day, month=month, year=year, time=time, make=make)
_date = str(meta_tags[0]).split("|")
time = _date[1].split(" ")[1]
_date = _date[1].split(" ")[0].split(":")
day = int(_date[2])
month = int(_date[1])
year = int(_date[0])
def __filter_data(self, value):
value_return = []
for k in self.__keyWords:
for v in value:
temp = v.split("|")
if temp[0] == k:
value_return.append(v)
return value_return
return ExifData(image_path=image_path, image_name=image_name, day=day, month=month, year=year, time=time, make=make)
def get_meta_data(self, images: list):
exif_data_list = []
for image in images:
exif_data_list.append(self.__get_image_meta_data(image_path=image))
return exif_data_list
def filter_data(value):
value_return = []
for k in key_words:
for v in value:
temp = v.split("|")
if temp[0] == k:
value_return.append(v)
return value_return
def get_meta_data(images: list):
exif_data_list = []
for image in images:
exif_data_list.append(get_image_meta_data(image_path=image))
return exif_data_list