Spaces:
Running
Running
File size: 2,156 Bytes
55d18b1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
import random
import string
import hashlib
import re
import streamlit as st
from PIL import Image
from PIL import ExifTags
def generate_random_md5():
# Generate a random string
random_string = ''.join(random.choices(string.ascii_letters + string.digits, k=16))
# Encode the string and compute its MD5 hash
md5_hash = hashlib.md5(random_string.encode()).hexdigest()
return md5_hash
def is_valid_number(number:str) -> bool:
"""
Check if the given string is a valid number (int or float, sign ok)
Args:
number (str): The string to be checked.
Returns:
bool: True if the string is a valid number, False otherwise.
"""
pattern = r'^[-+]?[0-9]*\.?[0-9]+$'
return re.match(pattern, number) is not None
# Function to validate email address
def is_valid_email(email:str) -> bool:
"""
Validates if the provided email address is in a correct format.
Args:
email (str): The email address to validate.
Returns:
bool: True if the email address is valid, False otherwise.
"""
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return re.match(pattern, email) is not None
# Function to extract date and time from image metadata
def get_image_datetime(image_file):
"""
Extracts the original date and time from the EXIF metadata of an uploaded image file.
Args:
image_file (UploadedFile): The uploaded image file from which to extract the date and time.
Returns:
str: The original date and time as a string if available, otherwise None.
Raises:
Warning: If the date and time could not be extracted from the image metadata.
"""
try:
image = Image.open(image_file)
exif_data = image._getexif()
if exif_data is not None:
for tag, value in exif_data.items():
if ExifTags.TAGS.get(tag) == 'DateTimeOriginal':
return value
except Exception as e: # FIXME: what types of exception?
st.warning(f"Could not extract date from image metadata. (file: {image_file.name})")
# TODO: add to logger
return None |