Скрипты

Сортировка фотографий и видео с перемещением

Скрипт сортирует фотографии и видео по году и месяцу съемки и копирует в соответствующую директорию.

Понадобится библиотека pillow: pip install pillow

import os
import shutil
from PIL import Image
from PIL.ExifTags import TAGS
from datetime import datetime

# Исходная папка с фотографиями и видео
SOURCE_DIR = r"D:\dir\dir"

# Папка, куда складывать отсортированные файлы
DEST_DIR = r"dir"

# Поддерживаемые форматы
PHOTO_EXTENSIONS = (".jpg", ".jpeg", ".png")
VIDEO_EXTENSIONS = (".mp4", ".avi", ".mov", ".mkv", ".wmv", ".flv", ".webm")


# Функция получения даты фото
def get_photo_date(photo_path):
    try:
        img = Image.open(photo_path)
        exif_data = img._getexif()

        if exif_data:
            for tag, value in exif_data.items():
                if TAGS.get(tag) == "DateTimeOriginal":  # Дата съемки из EXIF
                    return datetime.strptime(value, "%Y:%m:%d %H:%M:%S")

    except Exception as e:
        print(f"Ошибка чтения EXIF {photo_path}: {e}")

    # Если EXIF нет, берем дату создания файла
    return datetime.fromtimestamp(os.path.getctime(photo_path))


# Функция получения даты видео
def get_video_date(video_path):
    # У видео EXIF нет, поэтому берем дату создания файла
    return datetime.fromtimestamp(os.path.getctime(video_path))


# Функция сортировки файлов
def sort_media(source_dir, dest_dir):
    if not os.path.exists(dest_dir):
        os.makedirs(dest_dir)

    for root, _, files in os.walk(source_dir):
        for file in files:
            file_path = os.path.join(root, file)
            file_ext = file.lower().endswith

            if file_ext(PHOTO_EXTENSIONS):  # Обработка фото
                media_date = get_photo_date(file_path)
            elif file_ext(VIDEO_EXTENSIONS):  # Обработка видео
                media_date = get_video_date(file_path)
            else:
                continue  # Пропускаем файлы других форматов

            if media_date:
                year = str(media_date.year)
                month = f"{media_date.month:02d}"

                # Создаем папку: Год/Месяц
                target_folder = os.path.join(dest_dir, year, month)
                os.makedirs(target_folder, exist_ok=True)

                # Перемещаем файл
                shutil.move(file_path, os.path.join(target_folder, file))
                print(f"{file} → {target_folder}")


# Запускаем сортировку
sort_media(SOURCE_DIR, DEST_DIR)
print("Сортировка завершена!")

Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить