Смотреть позже — чистка и очередь
Статус: 1.0.0, готово к отправке в Chrome Web Store. Тексты карточки, ответы для проверки, скриншоты и промо-картинки — в store/. Адрес сайта бренда уже указан: BASE = 'https://ddvdvt.github.io/' в extension/lib/brand.js и homepage_url в манифесте.
⚠️ Проверено только на локальных фикстурах. Войти в аккаунт YouTube при разработке было нельзя, поэтому загрузка и удаление на настоящем списке «Смотреть позже» не прогонялись. Перед публикацией пройдите чек-лист на своём аккаунте.
Расширение для Chrome, Edge и Firefox (десктоп) для тех, у кого в «Смотреть позже» скопились тысячи видео:
- Чистка списка «Смотреть позже» — загрузить весь список целиком, посмотреть, что в нём, выбрать фильтрами, что удалить, и удалить безопасно: с резервной копией, пробным прогоном, порциями, с паузой, отменой и продолжением после перезагрузки.
- «Воспроизвести далее» и своя очередь — кнопки на превью видео и в меню правой кнопки мыши, панель очереди на странице видео, автопереход к следующему видео из очереди и сочетание клавиш.
Скрытием Shorts и рекомендаций это расширение не занимается — это делает отдельное расширение автора «Видео без мусора».
Чистка «Смотреть позже»
Откройте youtube.com/playlist?list=WL (нужно войти в аккаунт) — справа внизу появится кнопка «Разобрать „Смотреть позже“».
- Весь список. YouTube показывает по 100 видео; расширение само проходит все продолжения (пауза 0,2–0,45 с между страницами) и показывает прогресс «Загружено 1 200 из ~5 012». На локальных фикстурах 5000 видео загружаются за ~17 с; на настоящем YouTube ожидаемо 30–60 с (50 запросов плюс паузы). Вкладка не подвисает (в e2e-тесте самая длинная пауза главного потока при загрузке 5000 видео — около 60 мс).
- Сводка: всего, просмотрено, недоступно, Shorts, общая длительность.
- Фильтры (можно сочетать, режим «все условия сразу» или «любое»): просмотренные от N % (по умолчанию 90 %), недоступные (удалённые, скрытые), Shorts, каналы (выбор из списка с количеством и поиском), длительность от/до (в минутах), «всё, кроме первых K в списке», слова в названии (через запятую). Плюс ручные галочки у любого видео поверх фильтров.
- Живой предпросмотр: «Выбрано: 1 079 из 4 873», список с прокруткой (виртуальный — в DOM ~20 строк даже для 10 000 видео), переключатель «только выбранные».
- Встроенное в YouTube «Удалить просмотренные» (меню ⋮ списка) упомянуто прямо в панели: оно удаляет всё просмотренное разом и без предпросмотра. Здесь — порог просмотра, недоступные, каналы, длительность, позиция, слова, предпросмотр и резервная копия.
Безопасность
- Пробный прогон проходит весь план (сколько запросов, сколько видео) и не отправляет ни одного запроса — это проверяет e2e-тест.
- Перед любым удалением автоматически скачивается резервная копия всего загруженного списка в JSON (
watch-later-backup-ГГГГ-ММ-ДД-ЧЧММ.json: позиция, id видео, название, канал, длительность, процент просмотра, флаги, отметка «выбрано для удаления»). Последние три копии хранятся ещё и в расширении (их можно скачать в настройках как JSON или CSV). Кнопки «Скачать копию JSON» и «Скачать таблицу CSV» есть и в панели.
- Почему автоматически только JSON, а CSV — по кнопке: Chrome при двух скачиваниях подряд с одной страницы спрашивает «Разрешить сайту скачивать несколько файлов?»; если пользователь откажет, второй файл молча пропадёт. Важнее, чтобы гарантированно сохранился файл, по которому можно восстановить.
- Подтверждение с точным числом («Удалить 265 видео из „Смотреть позже“?»), первыми названиями, скоростью и примерным временем.
- Порции и паузы. Первый запрос — всегда с одним видео (проба формата). Дальше «Обычно» — по 25 видео раз в ~1,5 с (±30 %), «Бережно» — по 10 раз в ~3 с. При ответе 429 («слишком много запросов»), 5xx или обрыве сети — экспоненциальная пауза (с учётом
Retry-After, до 5 минут); после 6 неудач подряд удаление само встаёт на паузу. 401/403 — остановка с просьбой обновить страницу. Если YouTube не принял порцию целиком (400), те же видео отправляются по одному, а не принятые помечаются «пропущено».
- Пауза, отмена, продолжение после перезагрузки. Состояние сохраняется после каждой порции; после перезагрузки страницы кнопка становится «Продолжить удаление». Повторных удалений не бывает (проверено e2e).
- Возврат из резервной копии (из файла JSON/CSV или из копий в расширении): видео, отмеченные в копии как удалённые, добавляются обратно тем же действием, что и кнопка «Смотреть позже» на превью (
ACTION_ADD_VIDEO). Честно: порядок и «дата добавления» будут другими, недоступные видео вернуть нельзя, видео, которые уже есть в списке, пропускаются.
- В очередь вместо удаления: выбранные видео можно поставить в очередь — по порядку, вперемешку или с конца списка (обычно это «сначала старые»).
Что именно отправляется в YouTube и почему
Расширение делает ровно те запросы, что и сама страница «Смотреть позже» в вашей вкладке, и никаких других. Их отправляет маленький скрипт src/page/bridge.js, который работает в контексте страницы (manifest "world": "MAIN"), потому что только там доступен window.ytcfg — клиентский контекст YouTube.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗