Найти в Дзене

Разработка системы автоматизации сортировки горизонтальных и вертикальных видео и фото для SMM агенства

SMM-агентства и продакшн-команды ежедневно работают с сотнями медиаматериалов: фото для ленты, видео для Reels и YouTube, backstage-контент и сторис. Файлы поступают с разных устройств — смартфонов, камер, дронов — и в итоге смешиваются в одну папку с хаотичными именами вроде IMG_0231.MOV, DCIM_100MEDIA, WhatsApp Images. Разобраться в этом вручную невозможно: на сортировку уходит 5–6 часов в неделю у каждого контент-менеджера. Именно с этой болью в нашу компанию Coders Club After-AI обратился заказчик — SMM-агентство, работающее с несколькими десятками брендов. Две основные боли медиа-отделов: Создать настольное приложение для macOS и Windows, которое: Наш тим-лид и ко-фаундер студии Coders Club After-AI Александр Шаман расскажет про реализацию проекта. Мы начали проект с создания MVP, который сразу был полезен заказчику. Затем был выбран простейший стек Python + PyInstaller + Tkinter (GUI) для кроссплатформенности и скорости разработки.
С помощью AI-оркестра — Grok, Codex и ChatGPT —
Оглавление

SMM-агентства и продакшн-команды ежедневно работают с сотнями медиаматериалов: фото для ленты, видео для Reels и YouTube, backstage-контент и сторис.

Файлы поступают с разных устройств — смартфонов, камер, дронов — и в итоге смешиваются в одну папку с хаотичными именами вроде IMG_0231.MOV, DCIM_100MEDIA, WhatsApp Images.

Разобраться в этом вручную невозможно: на сортировку уходит 5–6 часов в неделю у каждого контент-менеджера. Именно с этой болью в нашу компанию Coders Club After-AI обратился заказчик — SMM-агентство, работающее с несколькими десятками брендов.

Разработка системы сортировки горизонтальных и вертикальных видео и фото для SMM агентства
Разработка системы сортировки горизонтальных и вертикальных видео и фото для SMM агентства

Проблема

Две основные боли медиа-отделов:

  1. Смешение вертикальных и горизонтальных материалов. Вертикальные видео нужны для Reels и TikTok, горизонтальные — для YouTube, но без сортировки всё попадает в одну папку.
  2. Свалка файлов с разных устройств. Фотоаппараты, смартфоны и видеокамеры сохраняют разный формат метаданных, а иногда не указывают время или локацию вовсе.

Задача

Создать настольное приложение для macOS и Windows, которое:

  • автоматически сортирует фото и видео по ориентации (вертикальные / горизонтальные),
  • группирует по локации и времени съёмки,
  • различает устройства (iPhone, Canon, Sony и т.д.),
  • разбивает по папкам, создавая удобную структуру.

Решение

Наш тим-лид и ко-фаундер студии Coders Club After-AI Александр Шаман расскажет про реализацию проекта.

Мы начали проект с создания MVP, который сразу был полезен заказчику. Затем был выбран простейший стек Python + PyInstaller + Tkinter (GUI) для кроссплатформенности и скорости разработки.

С помощью
AI-оркестра — Grok, Codex и ChatGPT — мы собрали рабочий прототип за 2 часа. Этот MVP сразу передали заказчику для проверки сценариев и составления листа корректировок.

За следующие 20 часов мы полностью завершили приложение: добавили GUI, автоматическую сортировку по EXIF и видео-метаданным, поддержку macOS и Windows.

Оставшиеся часы ушли на тестирование и лёгкую доработку интерфейса.

Метаданные извлекались через:

  • Pillow (PIL) — для фото (EXIF: ширина, высота, GPS, камера);
  • FFmpeg / ffprobe — для видео;
  • geopy — для обратного геокодирования (определение города по GPS).
Непритязательно, но эффективно - за 5 минут перебирает 1000 видео и рассортирует их по папкам
Непритязательно, но эффективно - за 5 минут перебирает 1000 видео и рассортирует их по папкам

Время и стоимость

  • Общее время разработки: 30 часов
    5 ч — исследование и прототип
    15 ч — разработка ядра и GUI
    5 ч — тестирование
    5 ч — сборка и документация
  • 💶 Стоимость: €1800

Результаты

  • Время сортировки контента сократилось с 4–6 часов до 10–15 минут.
  • Ошибки ручной классификации практически исчезли.
  • Фото и видео теперь структурированы по дате, городу, устройству и ориентации.
  • Приложение стало обязательным инструментом для контент-отдела.

Как работает программа

  1. Пользователь перетаскивает папку в окно.
  2. Программа считывает все файлы, извлекая EXIF-данные.
  3. Определяет:
    ориентацию кадра (portrait / landscape);
    время съёмки;
    координаты и город;
    устройство съёмки.
  4. Создаёт папки по схеме:
-3

Архитектура

-4

Пример кода: определение ориентации и локации

from PIL import Image, ExifTags
import os, piexif
from geopy.geocoders import Nominatim

def get_location(exif):
gps = exif.get("GPSInfo")
if not gps: return "unknown"
lat = gps[2][0][0] / gps[2][0][1] + gps[2][1][0] / gps[2][1][1] / 60
lon = gps[4][0][0] / gps[4][0][1] + gps[4][1][0] / gps[4][1][1] / 60
locator = Nominatim(user_agent="mediasorter")
loc = locator.reverse(f"{lat}, {lon}", language="en")
return loc.raw["address"].get("city", "unknown")

def analyze_image(file):
img = Image.open(file)
width, height = img.size
orientation = "vertical" if height > width else "horizontal"
exif_data = {ExifTags.TAGS.get(k, k): v for k, v in img._getexif().items()} if img._getexif() else {}
device = exif_data.get("Model", "unknown")
location = get_location(exif_data)
return orientation, device, location

Формирование структуры каталогов

import os, shutil
from datetime import datetime

def sort_file(file, orientation, device, location, date):
base = "sorted"
folder = f"{date.strftime('%Y-%m-%d')}_{location}"
dest = os.path.join(base, folder, orientation, device.replace(' ', '_'))
os.makedirs(dest, exist_ok=True)
shutil.copy(file, dest)
print(f"✅ {file} → {dest}")

GUI (Tkinter)

Простой drag-and-drop интерфейс:

import tkinter as tk
from tkinter import filedialog
from sorter import sort_folder

def open_folder():
path = filedialog.askdirectory()
sort_folder(path)

root = tk.Tk()
root.title("Media Sorter")
tk.Button(root, text="Выбрать папку", command=open_folder).pack(padx=40, pady=40)
root.mainloop()

Сборка под macOS и Windows

  • Использован PyInstaller:
    pyinstaller --onefile --windowed app.py
  • Созданы .dmg и .exe версии.
  • Приложение работает полностью оффлайн.

Пример результата

sorted/
2025-11-10_Paris/
vertical/
iPhone_15/
IMG_3301.JPG
IMG_3302.MOV
horizontal/
Canon_EOS/
DSC_1243.JPG
2025-11-12_Amsterdam/
horizontal/
Sony_A7III/

Технический результат

  1. Python отлично подошёл для прототипа и продакшн-версии благодаря кроссплатформенности.
  2. Pillow + FFmpeg покрыли 95% форматов фото и видео.
  3. Tkinter оказался достаточным для MVP-интерфейса.
  4. Приложение полностью автономное, не требует облака или базы данных.
  5. Код легко масштабируется под AI-тегирование или синхронизацию с Google Drive.