import os import sys sys.path.append("../") import time import shutil import logging from progressbar.progressbar import ProgressBar from src.exif_data import ExifData def sort_pictures(images:list, dst:str, logger:logging.Logger): image_total = len(images) image_counter = 0 progress_bar = ProgressBar( maxval=image_total, term_width=70 ) print(f"Start sorting {image_total} images\n") progress_bar.start() start_timer = time.time() for image in images: image:ExifData path = os.path.join(dst, str(image.make), str(image.year), str(image.month), str(image.day)) if not os.path.exists(path): os.makedirs(path) stat_info = os.stat(image.path) shutil.move(src=image.path, dst=f"{path}/{image.name}") # os.chmod(path=f"{path}/{image.name}", mode=stat_info.st_mode) logger.info(f"Moved {image.path} -> {path}/{image.name}") progress_bar.update(image_counter) image_counter += 1 end_timer = time.time() progress_bar.finish() print(f"\nDone\nSorted {image_total} images in {round(end_timer - start_timer, 2)} seconds")