4.7 KiB
ScanLibrary (Batch Duplicates Cleaner)
Утилита для аудита и очистки медиатеки (аниме, сериалов и видеофайлов) от дубликатов отдельных серий при наличии полных сезонных сборников (Batch / Complete).
🎯 Назначение
Когда скачиваются отдельные онгоинг-эпизоды (например, от релиз-групп вида [SubsPlease] Title - 01 [1080p].mkv), а затем скачивается полный пак сезона (Batch-папка со всеми сериями), одиночные файлы в директории загрузок становятся избыточными дубликатами.
ScanLibrary:
- Анализирует указанную директорию загрузок.
- Автоматически распознает папки/архивы с полными сезонами (по меткам
Batch,Complete,01-12и т.п.) и считывает доступные в них серии. - Находит отдельно лежащие видеофайлы (
.mkv,.mp4,.avi), извлекая название тайтла, номер эпизода и версию (v2,v3). - Сопоставляет их и выявляет только те файлы, которые уже есть в Batch и подлежат безопасному удалению.
- Формирует наглядные отчеты в различных форматах: 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)