Эксперимент: зеркало Youtube

Сервисов для скачивания видео с YouTube десятки, если не сотни.
Но почти все они начинаются с одного условия: у вас уже должна быть ссылка на видео.

Эксперимент: зеркало Youtube

А какой от них толк, если ссылки нет?
Вы помните тему, канал, примерное название. Но не ссылку на ролик.

Я подумал: а что если сделать максимально простое зеркало YouTube. Без рекомендаций, алгоритмов и ленты.

Просто: каналы → видео → ссылка.

На главной выводятся видео от новых к старым.
На главной выводятся видео от новых к старым.

В чём идея?

Если собрать это в одну базу, то видео можно:

  • Найти через поиск
  • Скопировать ссылку
  • Дальше каждый делает с ней, что хочет :)

Без танцев с бубном и без необходимости сначала идти на ютуб.

Самая большая проблема - база данных

Сам я не фанат ютуба. В моём избранном от силы 10 каналов, из которых на постоянной основе я смотрю 0.

Для эксперимента я спарсил около 80 каналов и получил чуть больше 100 тысяч видео. Это было в декабре. На 11 января'26 уже 338 каналов и 400 тысяч видео - за счет народного добавления каналов.

Это не попытка объять необъятное, а минимальный объём, с которым уже можно что-то тестировать.

У каждого канала есть своя страница
У каждого канала есть своя страница

Как это работает сейчас

В текущем MVP задействовано 5 скриптов:

  1. Публичная форма
    Любой человек может отправить ссылку на YouTube-канал. Скрипт получает информацию о канале и список всех видео.
  2. Скрипт сохранения канала
    Забирает и сохраняет название канала и базовые метаданные.
  3. Обработка видео
    Проходит по всем видео канала и добавляет их в базу.
  4. Загрузка превью
    Скачивает превью-изображения для каждого видео.
  5. Парсинг дат публикации
    Нужен для сортировки — от новых видео к старым. Процесс медленный, по 10 видео в минуту. Поэтому сейчас не у всех видео есть дата.

За месяц работы сервиса уже сделаны заметки, что нужно улучшать. Осталось найти время на эти улучшения.
В качестве основы парсинга используется yt-dlp.

Народное наполнение базы

Чтобы ссылок становилось больше, форма добавления каналов сделана публичной.

Любой может добавить свои любимые каналы, если его ещё нет в базе.

Если канала нет в базе, он добавится. Если есть - так и скажем.
Если канала нет в базе, он добавится. Если есть - так и скажем.

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

Поиск работает как по названию видео, так и по названию канала.

В январе я внедрил поиск и по самому ютубу на случаи, если в нашей базе нет нужного ответа - пытаемся найти прям в ютубе, выводим 100 результатов.

С какими проблемами я уже столкнулся

В процессе эксперимента вылезло несколько интересных моментов:

  • Периодически слетают cookies
    Из-за этого не парсятся видео с ограничениями доступа (только для авторизованных).
  • Некоторые видео пишет, что вообще не доступны.
    Т.е. ссылка на них есть в плейлисте, на деле же видео не доступны вообще для просмотра.
  • Проблемы с языком названий
    Некоторые видео сохраняются с английским названием вместо русского. Похоже, у роликов указано несколько языков, и парсер берёт значение по умолчанию. Для этого пришлось сделать отдельный скрипт, который также обрабатывает по 10 видео в минуту.
  • Ограниченные ресурсы
    Очевидно, что моя текущая инфраструктура не рассчитана на «все видео YouTube». Но пока работает.Это именно эксперимент и проверка гипотезы, надо ли это вообще.

Что это вообще такое

Проект не хранит видеофайлы, а только индексирует публично доступные метаданные (названия, ссылки, превью), чтобы получить их без лишних заморочек. Это может быть полезно вашим родственникам ;)

Потрогать MVP

Нужно нам такое?
Есть ли у него практическое применение?
В какую сторону логично развивать?

3
2
1
1
6 комментариев