Boosty Title Modifier

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

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Для установки этого скрипта вам необходимо установить расширение, такое как Tampermonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

Автор
Идзуми Сэна
Установок в день
0
Всего установок
14
Оценки
0 0 0
Версия
0.45
Создано
24.12.2023
Обновлено
04.11.2025
Размер
15,2 КБ
Лицензия
нет данных
Работает на

Скрипт предназначен для работы на сайте 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:

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