This commit is contained in:
2026-04-29 02:07:21 +03:00
parent ba6bfc5ed3
commit 0aa057c991
14 changed files with 4257 additions and 139 deletions

113
README.md
View File

@@ -1,11 +1,21 @@
# Manga Downloader
Загрузчик манги с readmanga.ru. Использует Playwright + Chromium для обхода JS-защиты сайта.
Загрузчик манги с readmanga.ru и совместимых сайтов. Использует Playwright + Chromium для обхода JS-защиты (DDoS-Guard, антибот).
Работает в двух режимах:
- **Веб-интерфейс** — браузерная панель управления с realtime-прогрессом через WebSocket
- **CLI** — консольные команды через `docker compose run`
📖 Подробная архитектурная документация: [ARCHITECTURE.md](ARCHITECTURE.md)
---
## Требования
- Docker + Docker Compose
---
## Быстрый старт
### 1. Собрать образ
@@ -14,49 +24,55 @@
docker compose build
```
### 2. Анализировать мангу (проверить доступность, список глав)
### 2. Запустить веб-интерфейс
```bash
docker compose run --rm manga analyze https://3.readmanga.ru/magicheskaia_bitva
docker compose up -d
```
### 3. Скачать всю мангу
Откройте **http://localhost:8000** — вставьте URL манги, выберите формат, нажмите «Добавить».
---
## CLI-команды
### Скачать мангу
```bash
# CBZ (по умолчанию)
docker compose run --rm manga download https://3.readmanga.ru/magicheskaia_bitva
docker compose run --rm --entrypoint "" manga \
python -m src.cli download https://3.readmanga.ru/magicheskaia_bitva
# PDF
docker compose run --rm manga 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 pdf
# Все форматы сразу
docker compose run --rm manga download https://3.readmanga.ru/magicheskaia_bitva --format all
# EPUB
docker compose run --rm manga download https://3.readmanga.ru/magicheskaia_bitva --format epub
docker compose run --rm --entrypoint "" manga \
python -m src.cli download https://3.readmanga.ru/magicheskaia_bitva --format all
```
### 4. Скачать определённые главы
### Скачать определённые главы
```bash
# Главы с 1 по 10
docker compose run --rm manga download <URL> --chapters 1-10
docker compose run --rm --entrypoint "" manga \
python -m src.cli download <URL> --chapters 1-10
# Конкретные главы
docker compose run --rm manga download <URL> --chapters 1,5,10
# Одна глава
docker compose run --rm manga download <URL> --chapters 47
docker compose run --rm --entrypoint "" manga \
python -m src.cli download <URL> --chapters 1,5,10
```
### 5. Продолжить прерванное скачивание
Скачивание автоматически продолжается с того места, где остановилось (флаг `--resume` включён по умолчанию).
### Анализировать мангу (список глав без скачивания)
```bash
docker compose run --rm manga download <URL> --resume
docker compose run --rm --entrypoint "" manga \
python -m src.cli analyze https://3.readmanga.ru/magicheskaia_bitva
```
---
## Выходные файлы
Файлы сохраняются в `./output/<название манги>/`:
@@ -64,23 +80,54 @@ docker compose run --rm manga download <URL> --resume
```
output/
Магическая_битва/
v01_ch001.0.cbz
v01_ch002.0.cbz
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` записывается поле `<Count>` — Komga отображает прогресс чтения серии.
```
--format / -f cbz | pdf | epub | all (по умолчанию: cbz)
--chapters / -c Диапазон или список глав
--output / -o Папка для сохранения (по умолчанию: ./output)
--resume Пропускать скачанные главы (по умолчанию: включено)
--concurrency Параллельных загрузок (по умолчанию: 4)
--verbose / -v Подробный вывод
```