F95Zone Enhanced Page Loader

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

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

作者
Идзуми Сэна
今日安裝
0
安裝總數
0
評價
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 "на лету" и не генерирует файлов. Основным видимым результатом (помимо раскрытия контента) является изменение заголовка вкладки.