39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
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")
|
|
|