Boosty Title Modifier

Добавляет время поста в заголовок *вкладки*

Du musst eine Erweiterung wie Tampermonkey, Greasemonkey oder Violentmonkey installieren, um dieses Skript zu installieren.

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.

Sie müssten eine Skript Manager Erweiterung installieren damit sie dieses Skript installieren können

(Ich habe schon ein Skript Manager, Lass mich es installieren!)

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!)

Autor
Идзуми Сэна
Installationen heute
0
Installationen gesamt
14
Bewertungen
0 0 0
Version
0.45
Erstellt am
24.12.2023
Letzte Aktualisierung
04.11.2025
Größe
15,2 KB
Lizenz
n/a
Wird angewandt auf

Скрипт предназначен для работы на сайте boosty.to. Его основная задача — модификация заголовка вкладки браузера (<title>) при просмотре страницы конкретного поста. Скрипт извлекает дату и время публикации поста, форматирует их в стандартизированный вид (ГГГГ.ММ.ДД ЧЧ ММ) и добавляет эту информацию в начало заголовка. Это обеспечивает более информативное название вкладки, что особенно полезно при одновременной работе с несколькими постами.

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

Скрипт построен на архитектуре двух наблюдателей (MutationObserver), которую можно описать как "Искатель" и "Защитник".

  1. Парсинг и форматирование даты (parseBoostyDate):

    • Вспомогательная функция, которая принимает строковое представление даты, используемое на Boosty (например, "15 окт 2024, в 14:30").
    • Она преобразует эту строку в единый числовой формат ГГГГ.ММ.ДД ЧЧ ММ (например, 2024.10.15 14 30), используя внутренний словарь для конвертации названий месяцев.
  2. Наблюдатель за контентом ("Искатель" - startBodyObserver):

    • Это основной MutationObserver, который следит за изменениями во всем document.body. Он необходим для работы в среде одностраничного приложения (SPA), коим является Boosty.
    • Обнаружение страницы поста: При любом изменении DOM, "Искатель" проверяет наличие первого поста в основной колонке и наличие у него заголовка <h1> (включая заголовок в блоке платной подписки).
    • Установка заголовка: Если <h1> найден и data-post-id изменился (т.е. пользователь перешел на новый пост), скрипт:
      1. Извлекает дату (getPostTime) и заголовок (h1Title.textContent).
      2. Форматирует дату с помощью parseBoostyDate.
      3. Формирует новую строку currentFormattedTitle (например, "2024.10.15 14 30 - Название Поста").
      4. Устанавливает document.title в это новое значение.
      5. Активирует "Защитника" (startTitleObserver) для охраны этого нового заголовка.
    • Сброс состояния: Если <h1> не найден (т.е. пользователь ушел со страницы поста в ленту или настройки), "Искатель" отключает "Защитника" и сбрасывает внутреннее состояние (currentPostId = null), возвращая управление заголовком вкладки сайту.
  3. Наблюдатель за заголовком ("Защитник" - startTitleObserver):

    • Это второй, вспомогательный MutationObserver, который следит исключительно за тегом <title>.
    • Проблема: В SPA-приложениях, фреймворк сайта (в данном случае Boosty) часто пытается "исправить" заголовок вкладки при малейших внутренних событиях, сбрасывая его к значению по умолчанию (например, "Название Поста - Имя Автора").
    • Решение: Как только "Защитник" обнаруживает, что document.title был изменен не на то значение, которое установил скрипт (currentFormattedTitle), он немедленно и принудительно возвращает document.title к сохраненному значению. Это гарантирует, что отформатированный заголовок остается во вкладке до тех пор, пока пользователь не покинет страницу поста.

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

  1. Перейдите на сайт boosty.to и откройте страницу любого автора.
  2. При просмотре ленты автора заголовок вкладки будет стандартным (например, "Блог Автора").
  3. Откройте любой пост (перейдите на его индивидуальную страницу).
  4. Скрипт немедленно сработает, найдет дату поста, и заголовок вкладки изменится.

Особенности

  • Архитектура "Искатель-Защитник": Использование двух MutationObserver является ключевой особенностью. "Искатель" (bodyObserver) реагирует на навигацию в SPA, а "Защитник" (titleObserver) борется с попытками SPA сбросить установленное скриптом значение.
  • Управление состоянием: Скрипт использует глобальные переменные (currentPostId, currentFormattedTitle) как простую машину состояний, чтобы понимать, находится ли он в данный момент на странице поста и нужно ли ему "защищать" заголовок.
  • Адаптивность к SPA: Скрипт корректно обрабатывает навигацию внутри сайта (переход из ленты на пост и обратно) без необходимости полной перезагрузки страницы.
  • @grant none: Скрипт работает в режиме @grant none, что означает его выполнение в контексте самой страницы. Это позволяет ему эффективно отслеживать изменения DOM и document.title без задержек.

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

Скрипт не генерирует видимый контент на странице. Его единственный результат — изменение текста во вкладке браузера.

Если оригинальный заголовок вкладки Boosty:

Настоящая история | Авторский блог