Об этом проекте
Already Watched — это локальное расширение для Chrome, предназначенное для уменьшения повторов в ленте YouTube. Оно обнаруживает карточки видео на главной странице, в боковой панели/рекомендациях, поиске, подписках, связанных сетках и поддерживаемых макетах Shorts. Воспроизведение отслеживается по фактическим уникальным сегментам; перемотки и повторный просмотр одного и того же сегмента не увеличивают прогресс. Когда количество просмотренных сегментов достигает настраиваемого порога, видео помечается как просмотренное. Режим отображения по умолчанию — Badge + Dim при 70% просмотра, при этом просмотренные карточки остаются кликабельными и восстанавливаются при наведении курсора или фокусе с клавиатуры. Доступные опции включают полное скрытие просмотренных карточек, возможность заполнения разреженной ленты, скрытие разделов Playables и предложений по темам, скрытие полок/карточек Shorts на главной странице, а также скрытие карточек плейлистов и коллекций Mix. Фильтры Playables/темы и плейлистов/Mix являются обратимыми, работают с режимами отображения и ограничены так, чтобы отдельные видео внутри плейлистов и обычные URL-адреса видео оставались доступными.
Ручное управление включает кнопки на миниатюрах для пометки видео как просмотренного или непросмотренного, команды контекстного меню Chrome для ссылок на видео или текущей страницы просмотра, а также действия в нативном трехточечном меню YouTube. Команда сканирования импортирует соответствующие индикаторы прогресса с карточек, отображаемых в активной вкладке без прокрутки, не запрашивая историю аккаунта и не используя YouTube API. Статистика разделяет сохраненные записи о просмотрах, общее количество отметок, отфильтрованные сегодня и за все время; дубликаты карточек, повторные рендеры, SPA-навигация и повторяющиеся события наблюдателя дедуплицируются. Очистка истории удаляет записи о видео, частичное воспроизведение, переопределения и статистику, но сохраняет настройки.
Расширение построено на Manifest V3 с ограниченными разрешениями для storage, contextMenus и доступом к хосту youtube.com. Оно использует chrome.storage.local для настроек, записей по каждому видео, статистики и данных о ревизии истории; очистка истории временно использует chrome.storage.session. В README указано, что в расширении нет аналитики, бэкенда, YouTube API, доступа к аккаунту Google, разрешений на историю браузера или cookies, а также нет синхронизации Chrome. Контент-скрипты работают в изолированном мире Chrome; React используется только для интерфейса всплывающего окна и настроек. Все скрипты, стили и иконки поставляются локально, без использования CDN или загрузки кода во время выполнения.
Для разработки требуются Node.js 20.19+ (рекомендуется Node 22 LTS), npm и Chrome 114+. Команды npm ci и npm run check собирают расширение в папку dist/. В README описаны тесты для модулей, DOM, конкурентности хранилища, регрессий плеера, проверки типов, сборки, режима отслеживания разработки и локального сервера предварительного просмотра. Известные ограничения включают эксперименты YouTube с макетом, мобильные и встроенные плееры (вне рамок версии v1), консервативную эвристику для рекламы/прямых эфиров, возможные пропуски в отслеживании воспроизведения и заполнение ленты по мере возможности, если YouTube не предоставляет поддерживаемого продолжения. Проект распространяется под лицензией MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.