Files
ScanLibrary/README.md

4.7 KiB
Raw Permalink Blame History

ScanLibrary (Batch Duplicates Cleaner)

Утилита для аудита и очистки медиатеки (аниме, сериалов и видеофайлов) от дубликатов отдельных серий при наличии полных сезонных сборников (Batch / Complete).


🎯 Назначение

Когда скачиваются отдельные онгоинг-эпизоды (например, от релиз-групп вида [SubsPlease] Title - 01 [1080p].mkv), а затем скачивается полный пак сезона (Batch-папка со всеми сериями), одиночные файлы в директории загрузок становятся избыточными дубликатами.

ScanLibrary:

  1. Анализирует указанную директорию загрузок.
  2. Автоматически распознает папки/архивы с полными сезонами (по меткам Batch, Complete, 01-12 и т.п.) и считывает доступные в них серии.
  3. Находит отдельно лежащие видеофайлы (.mkv, .mp4, .avi), извлекая название тайтла, номер эпизода и версию (v2, v3).
  4. Сопоставляет их и выявляет только те файлы, которые уже есть в Batch и подлежат безопасному удалению.
  5. Формирует наглядные отчеты в различных форматах: HTML, TXT, CSV и PDF.

🚀 Требования и установка

Базовые требования

  • Python 3.8 или выше.
  • Для базовой работы дополнительных библиотек не требуется (используется только стандартная библиотека Python).

Опционально (для экспорта в PDF)

Для автоматической компиляции HTML-отчета в файл PDF можно установить библиотеку weasyprint:

pip install -r requirements.txt

(Если weasyprint не установлен, скрипт сформирует HTML-отчет, который можно открыть в любом браузере и нажать Ctrl + P -> "Сохранить как PDF").


💻 Использование

1. Запуск с указанием папки через аргумент

Передайте путь к целевой директории с загрузками в командной строке:

python main.py "D:\Downloads\Anime"

2. Интерактивный запуск

Запустите скрипт без аргументов — программа сама запросит ввод пути в консоли:

python main.py

После чего вставьте путь к нужной директории и нажмите Enter.


📊 Результаты работы и отчёты

В подкаталоге reports/ папки скрипта создается набор отчетов с текущим таймстемпом (batch_cleanup_ГГГГ-ММ-ДД_ЧЧ-ММ-СС.*):

Формат Назначение
.html Интерактивный веб-дашборд со сворачиваемыми карточками тайтлов, кнопками «Развернуть/Свернуть все», информацией о батчах, размером каждого дубликата и итоговыми суммами.
.pdf Готовый PDF-документ (генерируется при установленном weasyprint).
.csv Таблица со разделителем ; (UTF-8 with BOM), открывается напрямую в Microsoft Excel или LibreOffice Calc.
.txt Текстовый структурированный лог для быстрого просмотра в консоли или блокноте.

📁 Структура репозитория

ScanLibrary/
├── main.py              # Основной исполняемый скрипт
├── requirements.txt     # Опциональные зависимости (weasyprint)
├── .gitignore           # Игнорируемые файлы (кэш Python, отчеты в reports/)
├── README.md            # Документация и инструкция
└── reports/             # Папка со сгенерированными отчетами (создается автоматически, в .gitignore)