mime types
This commit is contained in:
@@ -5,3 +5,4 @@ progressbar==2.5
|
|||||||
virtualenv==20.25.*
|
virtualenv==20.25.*
|
||||||
requests==2.31.*
|
requests==2.31.*
|
||||||
filetype>=1.0.7
|
filetype>=1.0.7
|
||||||
|
rawpy==0.19.*
|
||||||
@@ -13,16 +13,6 @@ picture_formats = ["JPG", "JPEG", "PNG", "TIFF"]
|
|||||||
key_words = ["DateTime", "Make"]
|
key_words = ["DateTime", "Make"]
|
||||||
|
|
||||||
|
|
||||||
def check_file_type(path:str):
|
|
||||||
# file_type = magic.from_file(mime=True, filename=path)
|
|
||||||
file_type = ""
|
|
||||||
if filetype.is_image(path):
|
|
||||||
file_type = "image"
|
|
||||||
elif filetype.is_video(path):
|
|
||||||
file_type = "video"
|
|
||||||
return MimeTypes(file_type)
|
|
||||||
|
|
||||||
|
|
||||||
def is_file_video(path:str):
|
def is_file_video(path:str):
|
||||||
mime = magic.Magic(mime=True)
|
mime = magic.Magic(mime=True)
|
||||||
file = mime.from_file(path)
|
file = mime.from_file(path)
|
||||||
@@ -38,16 +28,15 @@ def is_file_picture(path:str):
|
|||||||
|
|
||||||
|
|
||||||
def get_image_meta_data(image_path):
|
def get_image_meta_data(image_path):
|
||||||
image_extension = str(image_path).split("/")[-1].split(".")
|
# image_extension = str(image_path).split("/")[-1].split(".")
|
||||||
# TODO: Sort out videos
|
# TODO: Sort out videos
|
||||||
if is_file_video(path=image_path): return False
|
mime = MimeTypes(file_path=image_path)
|
||||||
# if not is_file_picture(path=image_path): return False
|
if mime.is_video or mime.is_unsupported_file_type: return False
|
||||||
|
|
||||||
img = Image.open(f"{image_path}")
|
img = Image.open(f"{image_path}")
|
||||||
values = []
|
values = []
|
||||||
for tag, text in img.getexif().items():
|
for tag, text in img.getexif().items():
|
||||||
if tag in ExifTags.TAGS:
|
if tag in ExifTags.TAGS: values.append([ExifTags.TAGS[tag], str(text)])
|
||||||
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)
|
return filter_date_and_make(meta_tags=filter_data(value=values), image_path=image_path)
|
||||||
|
|
||||||
|
|
||||||
@@ -57,10 +46,10 @@ def filter_date_and_make(meta_tags:list, image_path):
|
|||||||
year = None
|
year = None
|
||||||
time = None
|
time = None
|
||||||
print(meta_tags)
|
print(meta_tags)
|
||||||
make = str(meta_tags[1]).split("|")[1]
|
make = meta_tags[1][1]
|
||||||
image_name = str(image_path).split("/")[-1]
|
image_name = str(image_path).split("/")[-1]
|
||||||
|
|
||||||
_date = str(meta_tags[0]).split("|")
|
_date = meta_tags[0]
|
||||||
time = _date[1].split(" ")[1]
|
time = _date[1].split(" ")[1]
|
||||||
_date = _date[1].split(" ")[0].split(":")
|
_date = _date[1].split(" ")[0].split(":")
|
||||||
day = int(_date[2])
|
day = int(_date[2])
|
||||||
@@ -84,7 +73,7 @@ def filter_data(value):
|
|||||||
value_return = []
|
value_return = []
|
||||||
for k in key_words:
|
for k in key_words:
|
||||||
for v in value:
|
for v in value:
|
||||||
temp = v.split("|")
|
temp = v
|
||||||
if temp[0] == k:
|
if temp[0] == k:
|
||||||
value_return.append(v)
|
value_return.append(v)
|
||||||
return value_return
|
return value_return
|
||||||
|
|||||||
@@ -1,14 +1,19 @@
|
|||||||
class MimeTypes:
|
import filetype
|
||||||
def __init__(self, file_type):
|
import rawpy
|
||||||
self.image = False
|
|
||||||
self.video = False
|
|
||||||
self.unsupported_file_type = False
|
|
||||||
self.__proceed(file_type)
|
|
||||||
|
|
||||||
def __proceed(self, file_type):
|
|
||||||
if file_type == "image":
|
class MimeTypes:
|
||||||
self.image = True
|
def __init__(self, file_path):
|
||||||
elif file_type == "video":
|
self.is_image = False
|
||||||
self.video = True
|
self.is_video = False
|
||||||
|
self.is_raw = False
|
||||||
|
self.is_unsupported_file_type = False
|
||||||
|
self.__proceed(file_path)
|
||||||
|
|
||||||
|
def __proceed(self, file_path):
|
||||||
|
if filetype.is_image(file_path):
|
||||||
|
self.is_image = True
|
||||||
|
elif filetype.is_video(file_path):
|
||||||
|
self.is_video = True
|
||||||
else:
|
else:
|
||||||
self.unsupported_file_type = True
|
self.is_unsupported_file_type = True
|
||||||
|
|||||||
BIN
tests/test_files/test_video.mp4
Normal file
BIN
tests/test_files/test_video.mp4
Normal file
Binary file not shown.
@@ -5,20 +5,20 @@ from src.mime_types import MimeTypes
|
|||||||
|
|
||||||
class TestMimeTypes(unittest.TestCase):
|
class TestMimeTypes(unittest.TestCase):
|
||||||
def test_mime_type_image(self):
|
def test_mime_type_image(self):
|
||||||
mime_type = MimeTypes(file_type="image")
|
mime_type = MimeTypes(file_path="tests/test_files/test_image_001.JPG")
|
||||||
assert mime_type.image
|
assert mime_type.is_image
|
||||||
assert not mime_type.video
|
assert not mime_type.is_video
|
||||||
assert not mime_type.unsupported_file_type
|
assert not mime_type.is_unsupported_file_type
|
||||||
|
|
||||||
def test_mime_type_video(self):
|
def test_mime_type_video(self):
|
||||||
mime_type = MimeTypes(file_type="video")
|
mime_type = MimeTypes(file_path="tests/test_files/test_video.mp4")
|
||||||
assert not mime_type.image
|
assert not mime_type.is_image
|
||||||
assert mime_type.video
|
assert mime_type.is_video
|
||||||
assert not mime_type.unsupported_file_type
|
assert not mime_type.is_unsupported_file_type
|
||||||
|
|
||||||
def test_mime_type_unsupported_file_type(self):
|
def test_mime_type_unsupported_file_type(self):
|
||||||
mime_type = MimeTypes(file_type="not_a_valid_file_type")
|
mime_type = MimeTypes(file_path="tests/test_mime_types.py")
|
||||||
assert not mime_type.image
|
assert not mime_type.is_image
|
||||||
assert not mime_type.video
|
assert not mime_type.is_video
|
||||||
assert mime_type.unsupported_file_type
|
assert mime_type.is_unsupported_file_type
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user