from moviepy.editor import VideoFileClip import os, cv2, hashlib from PIL import Image def get_video_dimensions(video_path): cap = cv2.VideoCapture(video_path) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) cap.release() return width, height def determine_post_type(filepath, mediatype): if mediatype == 'image': with Image.open(filepath) as img: width, height = img.size elif mediatype == 'video': width, height = get_video_dimensions(filepath) aspect_ratio = width / height if aspect_ratio > 0.5 and aspect_ratio < 0.6: return 'stories' else: return 'posts' def get_media_type(filename): image_extensions = {".jpg", ".jpeg", ".png", ".gif", ".webp", ".bmp", ".tiff", ".tif", ".svg", ".eps", ".raw", ".cr2", ".nef", ".orf", ".sr2", ".heic", ".indd", ".ai", ".psd", ".svg"} video_extensions = {".mp4", ".mov"} extension = os.path.splitext(filename.lower())[1] # Get the extension and convert to lower case if extension in image_extensions: return 'image' elif extension in video_extensions: return 'video' else: return 'unknown' def get_video_duration(file_path): try: with VideoFileClip(file_path) as video: return video.duration except Exception as e: print(f"Error getting duration for {file_path}: {e}") return 0 def calculate_file_hash(file_path, hash_func='sha256'): h = hashlib.new(hash_func) with open(file_path, 'rb') as file: chunk = file.read(8192) while chunk: h.update(chunk) chunk = file.read(8192) return h.hexdigest()