Утилита для сортировки фото/видео по дате съёмки (EXIF, метаданные Windows или дата файла). Складывает файлы по структуре result/YYYY/MM/DD/filename.ext, для файлов без EXIF создаёт папку no_exif, а скриншоты складывает в отдельную папку screenshots.
Важно: перед использованием сделайте резервную копию ваших фото/видео.
- EXIF извлекается несколькими бэкендами (Pillow, pyexiv2*, exifread, piexif) с fallback на дату файла или свойства Windows.
- Поддержка вспомогательных файлов
.AAE,.THM(копируются вместе с основным файлом). - GUI на PyQt6 и CLI-режим.
- Тесты на pytest для ключевых сценариев.
- Работает на Windows; на Linux/macOS функции, завязанные на pywin32, будут отключены автоматически.
- Python 3.10+
- Зависимости из
requirements.txt(pywin32подтянется только на Windows).
git clone https://github.com/Volodichev/sort_files.git
cd sort_files
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txtpython sort_files.py --source C:\media\raw --result C:\media\resultПолезные флаги:
--no-group-no-exif— не складывать файлы без EXIF вno_exif, использовать дату ОС.--source,--result— явные пути к папкам (по умолчанию используютсяsource/иresult/в корне проекта).--version— версия приложения.
python gui.pyУкажите source и result, при необходимости поправьте расширения и флаги, затем нажмите «Запустить сортировку».
pip install -r requirements.dev.txt
pytest -qОсновные настройки в config.py:
SUPPORTED_EXTENSIONS,SETTING_EXTENSIONSFIND_SETS_FILES— искать вспомогательные файлыGROUP_NO_EXIF— складывать файлы без EXIF в отдельную папку- Имена рабочих директорий (
SOURCE_FOLDER,RESULT_FOLDER,SCREENSHOTS_FOLDERи т.д.)
sort_files.py— CLI-входgui.py— PyQt6 GUIsorter.py— основная логика сортировкиexif_utils.py— извлечение метаданныхfs_utils.py— файловые операцииtests/— тестовые данные и pytest-спеки
- *pyexiv2 или pywin32 не ставятся на nix. Библиотека пропускается, остальные бэкенды продолжат работать.
- Большие изображения и DecompressionBombWarning. Pillow отключает лимит размеров в коде, но будьте осторожны с подозрительными файлами.
Если проект помог, поставьте звёздочку и поделитесь отзывом 🙂