YouTube Embedded RU : 2022.11.6

Бармалей 06.11.2022 14.11.2022 2150.0

Исправлены мелкие ошибки, добавлены новые функции и дополнительные настройки.
Изменён подход к хранению настроек на сайте, доработана логика для embed-режима.
Возвращён запуск скрипта-инжектора на страницах мобильной версии YouTube.

Проверка работоспособности: SRWare Iron 31/36/49 + 360 Extreme Explorer 9/11/12/13 + Chromium 87.

На более старых версиях работоспособность НЕ гарантируется!


Во избежание проблем с работоспособностью расширения рекомендуется внимательно изучить документацию и учитывать важное примечание по настройке браузера!


Основные изменения:
  • исправлена проблема некорректного открытия ссылок в новой фоновой вкладке;

    Случайная ошибка, внесённая в предыдущей версии, связана с "излишней оптимизацией" условий проверки настроек. Проявлялась так: если в настройках интерфейса было ВЫКЛючено расширенное контекстное меню, новая вкладка всегда открывалась активной.

    Исправлено. Теперь ссылки открываются в активной/фоновой вкладке в зависимости от настройки "Открывать ссылки в фоновой вкладке", другие настройки при этом значения не имеют.

  • попутно исправлена логика автовоспроизведения в новой вкладке – зависит от фоновой/активной;

    Теперь, если новая вкладка открывается в фоне (неактивна), автозапуск плейера будет выключен. И наоборот, при открытии новой активной вкладки воспроизведение ролика запускается автоматически.

  • исправлена ошибка с переключением части настроек, в некоторых случаях не работало с первого раза;

    В частности, не отрабатывалась сразу смена настроек автоперехода на мобильный режим, на тёмную тему и отключение автовоспроизведения следующих роликов. При этом, при восстановлении куки на сайте установка этих параметров производилась корректно.

    Логическая ошибка, при переключениях этих опций запись настроек в куки выполнялась для их предыдущего состояния. Исправлено. Теперь настройки на сайте всегда устанавливаются в соответствии с "галками" в меню.

  • исправлена ошибка с отрисовкой пустого контекстного меню аддона на всех страницах всех сайтов;

    Проявлялось только в браузерах версий старше CR48, "корявка" в принципе отсутствует в более новых браузерах. Связано с некорректным определением контекста меню групп настроек (не удалялся пустой разделитель).

    Исправлено. Теперь контекстное меню в любых браузерах отрисовывается корректно, группы настроек в старых браузерах отображаются только на страницах сайта YouTube.

  • исправлена мелкая синтаксическая ошибка в функции добавления CSS, на работу функции не влияла;

    Случайная "очепятка" в одном из параметров CSS. Потенциально могла служить причиной неправильной работы функции цветокоррекции. Исправлено.

  • доработана предпроверка допустимости запуска действия из меню в текущем контексте вызова;

    Изменена регулярка проверки URL ссылки или иного контекста, для которого вызывается действие из меню, на полное соответствие всем поддерживаемым маскам для сервисов YouTube. Ситуация некорректного вызова могла возникать в браузерах версий CR48+ при вызове части функций (переходов или настроек) из контекстного меню кнопки на тулбаре, если такие попытки делаются НЕ на сайте YouTube. Также такая ситуация возникает в любой версии браузера при щелчке по кнопке на тулбаре, если текущая вкладка НЕ является страницей ролика на сайте YouTube.

    Кроме того, если действие не может быть выполнено в контексте вызова, теперь будет выдан соответствующий алерт об отказе (раньше невыполнимое действие просто молча игнорировалось).

  • доработана функция отображение настроек кодека/фреймрейта в интерфейсе плейера (MP4/Max.FPS=30);

    Теперь эти параметры отображаются и в окне/фрейме embedded-плейра (в предыдущих версиях – только в плейере на основных страницах роликов). В мобильной версии страниц этот блок не выводится, но сами настройки проверяются и отрабатываются скриптом инжектора.

    Кроме того, функция отрисовки блока этих настроек теперь "дожидается" окончания загрузки ролика (теперь эта строчка может появляться не сразу) для гарантированного отображения этого текстового блока.

  • изменён манифест, возвращено использование скрипта инжектора в мобильной версии YouTube;

    Для скриптов инжектора добавлено разрешение запуска на домене m.youtube.com. Теперь функции отключения комментариев и/или "рекомендуемых" снова работают и в мобильной версии сайта.

    Кроме того, при этом теперь и в мобильной версии сайта также работает общее сохранение, восстановление и применение любых изменяемых настроек просмотра (кодек, фреймрейт, цветокоррекция и т.д.). Эти изменения теперь работают независимо от текущего домена, настройки применимы как для основной, так и для мобильной версии YouTube.

  • изменён принцип хранения* настроек на сайте – только в куки, localStorage для этого больше не используется;

    Связано с проблемами ограничения браузером доступа к локальному хранилищу текущего сайта в случаях, если контент с YouTube выводится во фрейме (встроенные ролики на любых сторонних сайтах). В этих случаях попытка доступа инжектора к localStorage приводила к ошибке безопасности, после чего дальнейшая работа скрипта блокировалась.

    Теперь работа с локальным хранилищем производится только на страницах основного домена (www.youtube.com), в localStorage теперь хранится только копия внешнего скрипта подключаемого загрузчика. Работа с локальным хранилищем не используется на мобильной версии сайта и при запуске в режиме embedded-плейера.

    Соответственно изменён код фонового скрипта и инжектора, добавлены дополнительные проверки для обеспечения корректной работоспособности всех скриптов при различных условиях запуска.

  • изменена функция скачивания и сохранения файла внешнего подключаемого скрипта загрузчика;

    Упрощён код функции в инжекторе, убраны дублирующие проверки версии браузера. Теперь URL этого скрипта сохраняется в куки, функция скачивания просто берёт это значение и загружает файл. Сами условия проверки браузера и определение соответствующего URL для загрузки оставлены только в фоновом скрипте расширения.

    Дополнительно добавлена проверка инжектором наличия в куках URL загрузчика. При его отсутствии будет выдан алерт о необходимости восстановления настроек, это сообщение может выдаваться только при попытке вызова загрузчика и только на основном сайте YouTube. При работе в мобильной версии или в режиме embedded-плейера это условие не проверяется и сообщение не выдаётся.

  • переделано сокращённое меню страницы, удалена часть дублирующих пунктов, оставлены только нужные;

    Сделано с целью того, чтобы свести к минимуму (в упрощённом меню) вероятность появления вложенного меню для отдельных элементов контекста, т.е. чтобы это меню практически всегда состояло из единственного пункта, привязанного к контексту под курсором (ссылка, фрейм, страница, видео).

    Из всех пунктов сокращённого меню удалён префикс "YTE:". Также немного изменены названия этих пунктов, соответственно контексту и действиям.

  • изменено меню групп настроек, часть пунктов переименована, переупорядочена и перемещена в другие группы;

    Изменён порядок следования пунктов в меню "Настройки просмотра" + добавлены новые (см.ниже).

    Пункт "Задать CSS цветокорректора видео" переименован в "Задать CSS цветовой коррекции" и перемещён из группы настроек интерфейса в группу настроек просмотра.

    Пункт "Автоподключение панели загрузки" перемещён из группы настроек интерфейса в группу настроек просмотра.

    Сделано исходя из логики применения этих опций "по месту", функционально перемещённые опции не изменились.

    Для "красоты восприятия" из названий всех пунктов удалено концевое троеточие (…), присутствовало в заголовках групп настроек и в названиях части пунктов (для ссылок и т.д.).

  • добавлен пункт меню для ручной перезагрузки расширения – "Перезагрузить/обновить в DevMode";

    Расположен в группе "Сервисные функции". Добавлен чисто для удобства при самостоятельных доработках исходного кода. Исходя из названия, присутствует только при установке расширения в режиме разработчика, при использовании официальных авторских установочных пакетов не отображается.

  • добавлена опция просмотра в "безопасном режиме" – "Безопасный режим просмотра видео";

    Расположена в группе "Настройки просмотра". По умолчанию выключена. При включении задействует т.н. "детский режим" – фильтр контента, ограничивающий просмотр роликов с "чернухой и ужасами" и прочий "взрослый" контент.

    При этом, если конкретный ролик заблокирован таким фильтром, на странице отображается сообщение "Видео недоступно. Чтобы посмотреть это видео, отключите безопасный режим."

    Настройка сохраняется в куки и автоматически проверяется (и переустанавливается) инжектором. Если эта опция включена – её отключение средствами сайта YouTube действует только на период переходов в пределах вкладки и до её перезагрузки.

  • добавлен переключатель "Показать рекомендуемые в плейере" (в группе "Настройки просмотра");

    Относится только к режиму "embedded-плейера". По умолчанию выключен, при этом отображение "рекомендуемых" видео в режиме "embedded-плейера" полностью зависит от настройки "Не выводить список рекомендуемых" (будут отсутствовать, если эта настройка включена).

    При включении блокирует скрытие блока "рекомендуемых" в режиме "embedded-плейера" (будут отображаться независимо от настройки "Не выводить список рекомендуемых").

    Эта опция также влияет на параметры стандартных ключей в URL переходов (применяются при вызове из меню для открытия ссылок в режиме "embedded-плейера").

    Настройка сохраняется в куки и автоматически проверяется инжектором. Если эта опция включена – функция очистки блока "рекомендуемых" в режиме "embedded-плейера" игнорируется.

    Эта опция недоступна для изменения, если ВЫКЛючена настройка "Не выводить список рекомендуемых" (по умолчанию). В этом случае "рекомендуемые" в режиме "embedded-плейера" отображаются всегда.

  • доработан функционал "кнопки" вызова загрузчика (красная полоса в верхней части плейера);

    Улучшена "отзывчивость" кнопки (события mouseover/mouseout заменены на mouseenter/mouseleave). Добавлена фича отслеживания переключений текущего режима плейера (широкоэкранный или обычный) с динамическим изменением подсказки у "кнопки" о доступных действиях.

  • введено ограничение на ожидание готовности главного видео на странице ролика (30 секунд).

    Жёстко ограничено максимальное время ожидания загрузки видео для срабатывания автостопа и отрисовки "кнопки" вызова загрузчика. При превышении этого времени отслеживание готовности прекращается, автостопа не будет, "кнопки" загрузчика в плейере тоже не будет. Также не будет выполняться очистка комментариев и отключение блока "рекомендуемых" (если задано в настройках просмотра).

    Сделано в целях снижения общей нагрузки на браузер на слабых компьютерах или при использовании слишком медленных каналов. В подавляющем большинстве случаев указанного порога достаточно для нормального запуска всех функций.


    * Для лучшего понимания настоятельно рекомендуется прочитать важное примечание по настройке браузера.

Прочие изменения:
  • возвращена функция принудительного перестроения меню в браузерах версий старше CR47;

    Решает проблему "потери" изменённого контекстного меню (состояние "галок" настроек) в старых браузерах после выключения/включения расширения или после перезапуска браузера (присутствует, например, в браузерах CR31/36).

    В браузерах версий CR47+ эта функция не требуется и не задействуется.

  • переименован один из ключей localStorage с проверкой/переустановкой его значения при обновлении;

    Настройка включения "расширенного" контекстного меню (по умолчанию включена, ключ в хранилище отсутствует). Если была выключена (использовалось "сокращённое" контекстное меню страницы), настройка сохраняется в новом ключе, старый ключ удаляется. Это однократное действие, выполняется только при обновлении версии расширения.

  • оптимизирован код скриптов, упрощены проверки отдельных связанных условий и параметров настроек.

    Упрощена функция отключения комментариев и "рекомендуемых", теперь для неё используется общая функция установки стиля, также применяемая и для цветокоррекции. Немного повышена скорость обработки страницы инжектором за счёт оптимизации кода этой функции.

    Добавлен ряд проверок, ускоряющих обработку страницы инжектором, бо́льшая часть функций теперь не определяется и не выполняется, если отсутствуют соответствующие им настройки просмотра.

    Исходя из логики применения и выполняемых действий перераспределены по модулям функции обработки переключений и изменений настроек, оптимизирован и унифицирован их код.

    В результате в целом уменьшен общий размер как модулей фонового скрипта, так и скриптов инжектора.


Известные проблемы:
  • Ошибка* перестроения меню при изменении некоторых настроек.

    Связано с пропущенным определением переменной. Будет исправлено в следующей публичной версии.

    Для самостоятельного решения проблемы правим файл ytemenu.js: перед строкой 2 добавляем код:
    this.extDevMode = LS.extDevMode === 'true',
    и перезапускаем расширение (делаем это в режиме разработчика).

  • Ошибка* построения персонального списка серверов InVidious (пункт "Изменить список серверов InVidious")

    Связано с пропущенным определением временной переменной. Будет исправлено в следующей публичной версии.

    Для самостоятельного решения проблемы правим файл yterare.js: в строке 43 правим код:
    заменяем s[8] на T.old (с учётом регистра, всего два вхождения)
    и перезапускаем расширение (делаем это в режиме разработчика).

  • * Обновлено: эти ошибки исправлены в версии 2022.11.17.

Скриншоты:

Блок аддона на странице управления расширениями:

Запрашиваемые разрешения:

Меню "Смотреть и скачать":

Меню "Настройки просмотра":

Меню "Настройки интерфейса":

Меню "Сервисные функции" (выделен пункт перезагрузки при установке в режиме разработчика):

Меню "Справка и поддежка" (выделен переход на страницу ченч-лога текущей установленной версии):

Сообщение о недопустимом контексте вызова (например, при щелчке по кнопке на тулбаре вне сайта YouTube):

Меню расширения в браузерах версий до CR48 (группы настроек во вложенных подменю):


История и обсуждение

Общие технические сведения
  • Технологии и API:
    Чистый JavaScript (ES5), API: tabs, contextMenus, browserAction, content-script
  • Запрашиваемые разрешения:
    Общие: [ "activeTab", "contextMenus" ], контент-скрипт: [ "*://www.youtube.com/*", "*://m.youtube.com/*" ]

Загрузка и установка

Дополнительно
Так держать! :)
Официальные версии

URLПоделиться

Всего комментариев: 2
0
2 Бармалей 15.11.2022 • 20:10
..и ещё один аналогичный косячок - тоже связан с "забытым" старым значением временной переменной:
ошибка при установке собственного списка серверов Invidious (пункт "Изменить список серверов InVidious").

так же добавил в "кноун иссуи" вместе с решением, в следующей публичной версии будет исправлено.
0
1 Бармалей 14.11.2022 • 05:13
..обнаружил "косяк" с определением одной из переменных, приводит к ошибке перестроения меню при попытке изменения некоторой части настроек, добавил в "кноун иссуи" вместе с решением, в следующей публичной версии будет исправлено.
close