F95Zone Enhanced Page Loader

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

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
Идзуми Сэна
日安装量
0
总安装量
2
评分
0 0 0
版本
0.1
创建于
2025-11-04
更新于
2025-11-04
大小
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 "на лету" и не генерирует файлов. Основным видимым результатом (помимо раскрытия контента) является изменение заголовка вкладки.