# Manga Downloader Загрузчик манги с readmanga.ru и совместимых сайтов. Использует Playwright + Chromium для обхода JS-защиты (DDoS-Guard, антибот). Работает в двух режимах: - **Веб-интерфейс** — браузерная панель управления с realtime-прогрессом через WebSocket - **CLI** — консольные команды через `docker compose run` 📖 Подробная архитектурная документация: [ARCHITECTURE.md](ARCHITECTURE.md) --- ## Требования - Docker + Docker Compose --- ## Быстрый старт ### 1. Собрать образ ```bash docker compose build ``` ### 2. Запустить веб-интерфейс ```bash docker compose up -d ``` Откройте **http://localhost:8000** — вставьте URL манги, выберите формат, нажмите «Добавить». --- ## CLI-команды ### Скачать мангу ```bash # CBZ (по умолчанию) docker compose run --rm --entrypoint "" manga \ python -m src.cli download https://3.readmanga.ru/magicheskaia_bitva # PDF docker compose run --rm --entrypoint "" manga \ python -m src.cli download https://3.readmanga.ru/magicheskaia_bitva --format pdf # Все форматы сразу docker compose run --rm --entrypoint "" manga \ python -m src.cli download https://3.readmanga.ru/magicheskaia_bitva --format all ``` ### Скачать определённые главы ```bash # Главы с 1 по 10 docker compose run --rm --entrypoint "" manga \ python -m src.cli download --chapters 1-10 # Конкретные главы docker compose run --rm --entrypoint "" manga \ python -m src.cli download --chapters 1,5,10 ``` ### Анализировать мангу (список глав без скачивания) ```bash docker compose run --rm --entrypoint "" manga \ python -m src.cli analyze https://3.readmanga.ru/magicheskaia_bitva ``` --- ## Выходные файлы Файлы сохраняются в `./output/<название манги>/`: ``` output/ Магическая_битва/ v01_ch0001.0.cbz v01_ch0002.0.cbz ... ``` Состояние хранится в `./state/progress.db` (SQLite). Логи — в `./state/manga.log`. --- ## Параметры CLI | Флаг | Default | Описание | |------|---------|---------| | `--format / -f` | `cbz` | `cbz` \| `pdf` \| `epub` \| `all` | | `--chapters / -c` | — | Диапазон: `1-10`, `5`, `1,3,7` | | `--output / -o` | `./output` | Папка для сохранения | | `--resume` | включён | Пропускать уже скачанные главы | | `--force / -F` | — | Игнорировать БД, скачать заново | | `--concurrency` | `4` | Параллельных загрузок | | `--verbose / -v` | — | Подробный вывод (DEBUG) | --- ## Конфигурация (docker-compose.yml) | Переменная | Default | Описание | |------------|---------|---------| | `CHAPTER_CONCURRENCY` | `3` | Глав загружается параллельно | | `UPDATE_INTERVAL_HOURS` | `6` | Интервал авто-проверки новых глав (часы) | --- ## Возобновление прерванной загрузки Загрузка автоматически продолжается с места остановки — состояние хранится в БД. При перезапуске контейнера незавершённые задачи восстанавливаются в очередь. --- ## Метаданные (Komga и другие читалки) Каждый скачанный файл содержит полные метаданные серии и главы: | Формат | Метаданные | |--------|-----------| | **CBZ** | `ComicInfo.xml` (Anansi v2.1) — серия, номер, том, описание, жанры, язык, ориентация (право→лево), ссылка на источник | | **EPUB** | Dublin Core + `calibre:series` + EPUB3 `belongs-to-collection` — серия, описание, порядок глав | | **PDF** | PDF `/Info` + XMP (Dublin Core) — название, описание, язык, источник | Для завершённых серий (`pub_status = completed`) в `ComicInfo.xml` записывается поле `` — Komga отображает прогресс чтения серии. --- ## Редактирование метаданных Через веб-интерфейс можно изменить название серии, не перекачивая файлы: 1. Кликните на строку манги → откроется окно деталей. 2. Нажмите **✏️ Редактировать название**. 3. Измените «Название (ru)» и/или «Полное название». 4. Нажмите **Сохранить** — метаданные обновятся автоматически во всех скачанных файлах. > **Важно:** папка на диске при этом **не переименовывается**. Чтобы переименовать папку — используйте отдельную функцию ниже. --- ## Переименование папки Через веб-интерфейс можно изменить имя папки, в которую сохраняются файлы манги: 1. Кликните на строку манги → откроется окно деталей. 2. Нажмите **📁 Переименовать папку**. 3. Введите новое имя (спецсимволы удалятся автоматически, пробелы заменятся на `_`). 4. Нажмите **Переименовать**. После переименования: - Физическая папка на диске будет переименована. - Пути ко всем уже скачанным файлам обновятся в БД. - Дозагрузка новых глав продолжится в переименованную папку.