wnacg Download

Download images from wnacg gallery as a zip archive

Terá de instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

Terá de instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Terá de instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Terá de instalar uma extensão como Tampermonkey para instalar este script.

Terá de instalar uma extensão de gestão de scripts de utilizador para instalar este script.

(Já tenho um gestor de scripts de utilizador, deixe-me instalá-lo!)

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

(Já tenho um gestor de estilos de utilizador, deixe-me instalá-lo!)

Autor
Идзуми Сэна
Instalações diárias
0
Total de instalações
5
Classificações
0 0 0
Versão
0.1
Criado
26/04/2026
Atualizado
26/04/2026
Tamanho
10 KB
Licença
N/D
Aplica-se a

2. Назначение

Скрипт предназначен для автоматизации процесса полного и фонового скачивания изображений из галерей сайта wnacg (и его актуальных зеркал). Он самостоятельно собирает данные со всех страниц пагинации, загружает оригинальные изображения высокого разрешения, обходит базовые защиты от хотлинкинга и формирует готовый ZIP-архив с отсортированными файлами на стороне клиента (в браузере).

3. Ключевые функции

  • Асинхронный парсинг пагинации (getAllItemsData): Скрипт определяет максимальное количество страниц галереи (через .paginator a) и последовательно, с небольшими задержками, опрашивает индексные страницы (fetch). Из полученного HTML с помощью DOMParser извлекаются ссылки на страницы отдельных фото и URL их миниатюр (превью).
  • Эвристическое вычисление прямых ссылок (transformThumbToOriginal): Вместо того чтобы делать ресурсоемкий HTTP-запрос к странице каждого отдельного изображения для получения прямой ссылки на оригинал, скрипт анализирует URL превью и с помощью строковых замен (замена /data/thumb/ на /data/ и домена //t на //img) генерирует предполагаемую прямую ссылку. Это радикально ускоряет работу скрипта.
  • Двухуровневая система загрузки файлов (downloadWithRetry и fetchRealUrlFromPage):
    1. Основной поток: Скрипт пытается загрузить изображение по эвристически вычисленной ссылке через GM_xmlhttpRequest.
    2. Резервный поток: Если генерируемая ссылка отдала ошибку (например, 404 Not Found), код делает fetch страницы с изображением, парсит её структуру (#picarea), извлекает 100% достоверную ссылку на оригинал и скачивает её.
  • Интеллектуальная обработка файлов и формирование архива (downloadImages): Изображения сохраняются в формате Blob. Скрипт анализирует MIME-тип (например, image/webp или image/jpeg) для корректного назначения расширения файла. Имена файлов форматируются с ведущими нулями (например, 001.jpg), что гарантирует правильную хронологическую сортировку при просмотре распакованной галереи.

4. Как использовать

  1. Откройте страницу любой галереи на поддерживаемом домене (например, wnacg.com).
  2. Рядом с кнопкой чтения появится красная кнопка «Download ZIP».
  3. Нажмите на неё. Под кнопкой появится текстовый статус, отображающий процесс (сканирование страниц -> скачивание изображений -> архивация).
  4. По завершении браузер автоматически предложит сохранить ZIP-файл с названием галереи.

5. Особенности

  • Подключение внешних зависимостей: Использование директивы @require позволяет импортировать мощные библиотеки JSZip и FileSaver.js напрямую из CDN, делегируя им сложную логику упаковки в архив и триггера системного диалога сохранения файла.
  • Подмена заголовков для обхода защиты (Anti-Hotlinking): Загрузка изображений осуществляется через привилегированный API GM_xmlhttpRequest. Это критически важное решение, позволяющее инжектировать заголовок "Referer": location.origin + '/'. Без этого заголовка CDN серверов (защищающих изображения от встраивания на сторонние ресурсы) возвращали бы ошибку 403 Forbidden.
  • Rate-Limiting (Ограничение частоты запросов): Использование функции delay(ms) между запросами к страницам и загрузками файлов предотвращает возникновение ошибки 429 (Too Many Requests) и защищает пользователя от теневого бана по IP-адресу.
  • Отказоустойчивая архитектура архивации: Если скрипту не удается скачать часть изображений из-за мертвых ссылок или сбоев сети, выполнение не прерывается. Ошибочные URL собираются в массив errors и бережно сохраняются в текстовый лог-файл внутри финального ZIP-архива.

6. Пример выходных данных

После успешной отработки скрипта пользователь скачивает архив вида Название_Галереи.zip, внутренняя структура которого (с учетом обработки расширений и сортировки) выглядит следующим образом:

Название_Галереи.zip
│
├── 001.jpg
├── 002.webp
├── 003.png
├── 004_originalName.jpg
...
└── errors_log.txt (появляется только в случае ошибок загрузки)