YOLO-World / utils /video.py
SkalskiP's picture
Old video removal mechanism.
e75f111
import os
import datetime
import uuid
from typing import List
import supervision as sv
MAX_VIDEO_LENGTH_SEC = 2
def generate_file_name(extension="mp4"):
current_datetime = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
unique_id = uuid.uuid4()
return f"{current_datetime}_{unique_id}.{extension}"
def list_files_older_than(directory: str, diff_minutes: int) -> List[str]:
diff_seconds = diff_minutes * 60
now = datetime.datetime.now()
older_files: List[str] = []
for filename in os.listdir(directory):
file_path = os.path.join(directory, filename)
if os.path.isfile(file_path):
file_mod_time = os.path.getmtime(file_path)
file_mod_datetime = datetime.datetime.fromtimestamp(file_mod_time)
time_diff = now - file_mod_datetime
if time_diff.total_seconds() > diff_seconds:
older_files.append(file_path)
return older_files
def remove_files_older_than(directory: str, diff_minutes: int) -> None:
older_files = list_files_older_than(directory, diff_minutes)
file_count = len(older_files)
for file_path in older_files:
os.remove(file_path)
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(
f"[{now}] Removed {file_count} files older than {diff_minutes} minutes from "
f"'{directory}' directory."
)
def calculate_end_frame_index(source_video_path: str) -> int:
video_info = sv.VideoInfo.from_video_path(source_video_path)
return min(
video_info.total_frames,
video_info.fps * MAX_VIDEO_LENGTH_SEC
)
def create_directory(directory_path: str) -> None:
if not os.path.exists(directory_path):
os.makedirs(directory_path)