Web Extension, добавляющий дополнительный функционал на Coub.com
Warning
Расширение находится на раннем этапе разработки, поэтому временно:
- тестируется только на Firefox-based браузерах (Firefox, Waterfox, LibreWolf и прочие лисьи форки) и может не работать в других
например, фильтрация запросов сейчас построена наwebRequest.filterResponseData
и не будет работать в Chromium-based браузерах и Safari, в которых используемое API всё ещё не реализовано - не публикуется в сторах и не подписывается, из-за чего для постоянной установки требует отключенной проверки подписи (в Firefox это настройка
xpinstall.signatures.required
) - периодически могут вноситься обратно несовместимые изменения, требующие ручной миграции настроек (хотя такого ещё ни разу не было, и, я надеюсь, не будет, но бэкапы делай, бэкапы - это здорово)
- проект
не следует SemVer иплохо сконфигурирован (да и в целом ведёт себя плохо)
Если всё прочитанное не отпугнуло желание попробовать, качай последний релиз (если я не забыл его создать) или смотри секцию Building с инструкцией по самостоятельной сборке
Минимальные поддерживаемые версии браузеров:
- Firefox 101
-
скрытие дизлайкнутых коубов
-
скрытие коубов от заблокированных каналов
-
скрытие коубов по названию и тегам, содержащим указанные фразы или соответствующим регулярным выражениям
-
скрытие рекоубов
-
быстрое копирование/блокировка тега через контекстное меню
-
предотвращение изменения скорости воспроизведения при нажатии W/S
-
дополнительные клавиатурные сокращения:
действие сочетание по умолчанию поставить/убрать дизлайк D (Dislike) добавить/убрать из закладок B (Bookmark) переключить полноэкранный режим F (Fullscreen) NOTE: если сокращения не работают (особенно если расширение только что было установлено/обновлено), попробуйте обновить страницу - данный функционал работает через вклинивание в виджеты Coub'а и требует применения патчей до момента создания виджетов.
Tip
Фильтрация коубов (дизлайкнутых, от заблокированных каналов и т.д.) применяется к ответам запросов к API, в связи с чем:
-
изменение фильтров не влияет на уже загруженные коубы
так, если открыть сообщество
Anime
и поставить дизлайк первому коубу, он будет скрыт не сразу, а только при следующем запросе списка (например, после обновления страницы или после перехода на другую страницу и возвращения в сообщество) -
в некоторых ситуациях может порождать состояния, которые логика самого Coub.com не учитывает (пример - #5)
Для сборки требуются глобально установленные:
- Node.js1 со включенным Corepack
- Rust (MSRV:
1.73.0
) wasm-opt
из Binaryen (опционально, используется для оптимизации WASM изsegmenter-utils
)
-
устанавливаем зависимости
pnpm i -P
-
собираем
pnpm zip:ff
-
открываем
about:addons
, жмём на шестерню,Install Add-on From File...
, выбираем.output/coub-addons-x.x.x-firefox.zip
, соглашаемся с установкой непроверенного расширения
Ссылки на некоторые интересные лейблы:
- планируемый новый функционал:
T-feature
New feature or request - вызываемые этим расширением баги на Coub.com:
T-site bug
Issues leading to bugs on Coub.com
-
для удобства в
Taskfile
собраны некоторые команды
посмотреть их список:pnpm task -l
, запустить:pnpm task {task}
(например,pnpm task su:watch
) -
устанавливаем зависимости
pnpm i
-
если не хочется, чтобы dev-версия расширения конфликтовала с prod-версией, создаём файл
.env.local
с содержимым:VITE_GECKO_ID=some@ext.id # см. https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings#extension_id_format
-
выполняем
pnpm dev:ff
для дев-сборки под Firefox-based браузеры -
загружаем расширение из директории
.output/firefox-mv2
Сгенерировать N
фейковых каналов для стора blockedChannels
:
- выполняем
node ./utils/fakeBlockedChannels.js N # где N - положительное число
- открываем настройки расширения и импортируем бэкап из созданного файла