◂ База знанийRYA.AEFootage Catalog — каталог съёмочного материала со ссылками на Driveобновлено 20 авг 2026
Исходники спринта — это сотни гигабайт с именами вида RYA-ZVE1-1547.MP4: через месяц никто не помнит, что внутри. Каталог решает это одной HTML-страницей: все съёмочные папки канала, у каждого видео — осмысленная обложка (не случайный кадр), хронометраж, размер и прямая ссылка на файл в Google Drive. Материал становится используемым: нужную сцену находят глазами за минуту, ничего не скачивая.
📌 Когда применять. После выгрузки исходников съёмочного спринта на Drive (следом за 2.1 и заливкой). Вход: съёмочные папки канала на SSD и/или Drive. Выход: {CH}_structure.html в корне канала на Drive и на SSD — самодостаточный файл, работает офлайн, шлётся кому угодно. Живой пример: YTFP — 14 папок, 181 видео, 437 ГБ.
сверка SSD ↔ Drive кандидаты ffmpeg скоринг OpenCV локально HTML в стиле портала Drive + ссылки на файлы
1Что на странице2Выбор обложки3Конвейер4Сверка SSD ↔ Drive5Грабли6Развитие7Где лежит

2.5 · 1Что на странице

  • 1
    Карточка папки: номер + название в одну строку, под ним 1–3 строки о содержимом, затем статистика (клипов · хронометраж · ГБ) и кнопка «Google Drive» на папку.
  • 2
    Статус хранения у каждой папки: SSD + Drive · только Drive · SSD → Drive… — сразу видно, где физически лежит материал.
  • 3
    Сетка обложек: кадр каждого клипа, под ним имя файла (активная ссылка на файл в Drive), длительность и размер. Клик по кадру или имени открывает конкретный файл, не папку.
  • 4
    Малоценные папки (бытовые архивы) сворачиваются до одной строки: несколько кадров + плашка «+N видео» со ссылкой на папку. Информация, что материал есть, остаётся — место не съедается.
  • 5
    Оглавление — столбики с нумерацией сверху вниз; вводный блок объясняет устройство (съёмочные папки ≠ монтажные проекты; внутри каждой Audio + Transcripts).

Стиль — как этот сайт: тёмная тема, шрифты Space Grotesk/Inter, акцент канала. Всё inline, картинки — data-URI: один файл без зависимостей.

2.5 · 2Выбор обложки: «самый основной кадр», локально

Кадр из середины клипа — лотерея: спина, смаз, пустая стена. Вместо этого на каждый клип извлекаются 7 кандидатов (12–88% длительности) и каждый оценивается локально (OpenCV, без облака):

score = 3.0×лицо (haarcascade: размер + центрированность)
      + 1.0×резкость (дисперсия лапласиана)
      + 1.2×экспозиция (средняя яркость, штраф за клиппинг)
      + 0.5×цветность (Hasler–Süsstrunk)

Побеждает максимум. Для интервью это почти всегда «человек в кадре, резко, нормально по свету». Клипы, которых нет на SSD, читаются ffmpeg'ом прямо из Drive по HTTP range-запросам — скачиваются килобайты, не гигабайты.

Опциональный второй проход: визуальный QC выбранных обложек (агентный просмотр картинок) — ловит то, что метрики не видят: «пьёт воду», рука оператора в кадре, спина крупным планом. На YTFP заменил 15 обложек из 181.

2.5 · 3Конвейер

#шагскрипт
1обход локальных папок: длительности + первичные кадрыextract_frames.py
2Drive-only папки: листинг + превью через Drive APIdrive_thumbs.py
3выбор обложек скорингом (локально, cv2)pick_frames.py local|drive
4(опц.) визуальный QC + заменыswaps.json → apply_swaps.py
5карта file-ID для прямых ссылокfetch_ids.py
6сборка страницы + заливка в корень каналаgen_html_v2.py
7если параллельно шла дозаливка: авто-пересборка ссылок после её концаlink_refresher.sh

Скрипты: ~/YTAI/scripts/999_extra/footage_catalog/ (README внутри). Для pick_frames.py — питон из environment/.venv_transcribe (cv2). Обновление страницы — перезалить файл с тем же именем: file-ID и ссылка не меняются.

2.5 · 4Сверка SSD ↔ Drive — обязательный гейт

Перед публикацией каталог сверяет состав видео по именам и размерам в обе стороны. Это не формальность: на YTFP сверка показала, что папки 07 и 13 на Drive пустые — 214 ГБ исходников существовали в единственном экземпляре на SSD. Каталог честно показывает статус каждой папки и не даёт ссылкам вести в пустоту.

Найдена дыра → сразу ставится заливка (rclone copy с логом в _sync_logs/), папка получает статус SSD → Drive…, а link_refresher.sh после конца заливки сам дособирает прямые ссылки.

2.5 · 5Грабли

  • ⚠️
    Shared Drive: Drive API без supportsAllDrives=true&includeItemsFromAllDrives=true молча возвращает пустой список.
  • ⚠️
    Нет превью у свежих видео: Drive не всегда отдаёт thumbnailLink — тогда кадр тянуть ffmpeg'ом по HTTP с Bearer-токеном (rscore/token.json).
  • ⚠️
    HTML на Drive не рендерится в превью — получателю: скачать файл и открыть в браузере, ссылки внутри работают.
  • ⚠️
    Дубли имён клипов между папками реальны (RYA-ZVE1-1649.MP4 был в 02 и 09) — все карты ключуются NN_<путь>, не именем файла.
  • ⚠️
    Клипы ~1 секунда: mjpeg падает на non-full-range YUV → -strict unofficial.

2.5 · 6Развитие: следующие слои анализа

Каталог — первый слой описания материала. Поверх той же структуры планово наращиваются (максимум локальными моделями):

  • Транскрипт-выжимки в карточку клипа: первая фраза / темы из уже существующих Transcripts/per_clip — поиск «где он говорит про…».
  • VLM-описания сцен (mlx, локально): «кто в кадре, что происходит, какой план» — теги для перебивок и B-roll.
  • Поиск по содержимому поверх каталога: текст + теги + кадры в одном индексе канала.

2.5 · 7Где лежит · связанные

чтогде
тулинг + README~/YTAI/scripts/999_extra/footage_catalog/
живой примерYTFP_structure.html — корень канала YTFP на Drive и T7-Beige-RYA/YTFP/
структура исходников на входе2.1 Исходники → целевая структура
зеркало проекта SSD ↔ Drive3.6 Project Drive Sync
обогащение исходников (живость, vision)2.4 Оживление ката
Каталог = папки + осмысленные обложки + прямые ссылки на Drive. Один HTML-файл — и спринт исходников перестаёт быть чёрным ящиком.