F95Zone Enhanced Page Loader

Раскрывает спойлеры, загружает изображения, нажимает "загрузить еще", проходит страницы-маски и ОЧИЩАЕТ ЗАГОЛОВОК, добавляя в него инфо-список

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

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

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

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

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

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

ئاپتورى
Идзуми Сэна
بۈگۈن قاچىلانغىنى
0
جەمئىي قاچىلانغىنى
2
باھا نومۇرى
0 0 0
نەشرى
0.1
قۇرۇلغان ۋاقتى
2025-11-04
يېڭىلانغان ۋاقتى
2025-11-04
Size
14.5 KB
ئىجازەتنامىسى
يوق
قوللايدىغىنى

Скрипт представляет собой комплексный инструмент (enhancer) для сайта f95zone.to. Его основная цель — автоматизация рутинных действий пользователя для значительного ускорения просмотра и взаимодействия с контентом.

Скрипт выполняет две основные функции в зависимости от типа страницы:

  1. На страницах-масках (interstitial): Автоматически обнаруживает и нажимает ссылку "Продолжить", пропуская страницу-посредник.
  2. На страницах тем (/threads/): Активирует полный набор улучшений:
    • Автоматически раскрывает все спойлеры на странице.
    • Принудительно загружает все "ленивые" (lazy-load) изображения.
    • Автоматически нажимает кнопки "загрузить еще" (например, для подгрузки старых комментариев).
    • Очищает заголовок вкладки браузера от суффикса | F95zone и добавляет в него информативный список тегов, взятых со страницы.

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

  1. runInitialScan() (Точка входа и маршрутизация):

    • Это главная функция, запускаемая после загрузки страницы (window.load).
    • Она выполняет "маршрутизацию": сначала вызывает clickContinueLink().
    • Если clickContinueLink() возвращает true (страница-маска пройдена), выполнение завершается.
    • Если false (это не маска) и URL содержит /threads/, запускается processPageElements() и активируются два наблюдателя (MutationObserver).
  2. processPageElements() (Функция-оркестратор):

    • Вызывается на страницах тем. Она поочередно запускает все модули улучшения:
    • expandSpoilers(): Находит все элементы .bbCodeSpoiler-button, которые еще не были обработаны (нет data-processed), нажимает на них и помечает их, чтобы избежать повторных кликов.
    • loadLazyImages(): Находит все img.lazyload (без data-processed), считывает URL из data-src и немедленно присваивает его в src, принудительно загружая изображение.
    • clickLoadMoreButton(): Находит a.js-loadMore (без data-processed) и нажимает на нее для подгрузки динамического контента.
    • cleanPageTitle(): Вызывает функцию очистки и форматирования заголовка.
  3. cleanPageTitle() и getListItemsAsText() (Модификация заголовка):

    • Это двухэтапный процесс. Сначала getListItemsAsText() находит все теги темы (a.tagItem внутри .listInline--bullet) и собирает их в единую строку через запятую.
    • Затем cleanPageTitle() при первом запуске определяет "чистый" базовый заголовок, находя и отсекая суффиксы (например, | F95zone).
    • После этого она формирует новый заголовок, объединяя "чистый" базовый заголовок и строку тегов.
    • Результат сохраняется в lastSetTitle.
  4. contentObserver (Наблюдатель за контентом):

    • Экземпляр MutationObserver, который следит за document.body на предмет добавления новых узлов (childList: true, subtree: true).
    • Когда clickLoadMoreButton() (или другой скрипт) добавляет на страницу новый контент (например, пачку комментариев), этот наблюдатель срабатывает.
    • Он использует 500-миллисекундную задержку (debounce) и повторно запускает processPageElements(), чтобы раскрыть спойлеры и загрузить изображения в новом контенте.
  5. titleObserver (Наблюдатель за заголовком):

    • Второй, отдельный MutationObserver, который следит только за тегом <title>.
    • Назначение: Борьба со скриптами сайта. SPA-фреймворки часто "восстанавливают" заголовок вкладки при навигации.
    • Логика: Если наблюдатель замечает, что document.title изменился и не равен тому, что установил наш скрипт (lastSetTitle), он принудительно вызывает cleanPageTitle() заново, восстанавливая кастомный заголовок.

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

  1. Установите UserScript в Violentmonkey или аналогичный менеджер.
  2. Перейдите на сайт f95zone.to.
  3. При переходе по внешним ссылкам скрипт будет автоматически нажимать "Продолжить" на страницах-масках.
  4. При открытии любой страницы темы (/threads/):
    • Все спойлеры на странице мгновенно раскроются.
    • Все изображения загрузятся сразу, без необходимости прокрутки.
    • Кнопки "загрузить еще" (если они есть) будут нажаты автоматически.
    • Заголовок вкладки в браузере изменится, отобразив теги темы (например, "VNs, Ren'Py, Male Protagonist").

Особенности

  • Двойная архитектура MutationObserver: Ключевая особенность скрипта. Один наблюдатель (contentObserver) отвечает за новый контент на странице, а второй (titleObserver) "защищает" заголовок вкладки от сброса скриптами сайта.
  • Идемпотентность: Использование data-processed="true" гарантирует, что скрипт не будет бесконечно нажимать на одни и те же спойлеры или кнопки при каждом срабатывании MutationObserver.
  • Контекст @grant none: Скрипт выполняется в контексте страницы, что дает ему прямой доступ к DOM и document.title для максимальной скорости работы.
  • @run-at document-end: Скрипт начинает работу до полной загрузки всех ресурсов (как window.load), но после построения DOM, что позволяет ему быстро обрабатывать статический контент и устанавливать наблюдателей.
  • Оптимизация заголовка: Логика очистки заголовка надежно отделяет "базовое" название темы от суффикса сайта и обогащает его полезной информацией (тегами).

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

Скрипт модифицирует DOM "на лету" и не генерирует файлов. Основным видимым результатом (помимо раскрытия контента) является изменение заголовка вкладки.