Эксперимент: зеркало Youtube
Сервисов для скачивания видео с YouTube десятки, если не сотни.
Но почти все они начинаются с одного условия: у вас уже должна быть ссылка на видео.
А какой от них толк, если ссылки нет?
Вы помните тему, канал, примерное название. Но не ссылку на ролик.
Я подумал: а что если сделать максимально простое зеркало YouTube. Без рекомендаций, алгоритмов и ленты.
Просто: каналы → видео → ссылка.
В чём идея?
Если собрать это в одну базу, то видео можно:
- Найти через поиск
- Скопировать ссылку
- Дальше каждый делает с ней, что хочет :)
Без танцев с бубном и без необходимости сначала идти на ютуб.
Самая большая проблема - база данных
Сам я не фанат ютуба. В моём избранном от силы 10 каналов, из которых на постоянной основе я смотрю 0.
Для эксперимента я спарсил около 80 каналов и получил чуть больше 100 тысяч видео. Это было в декабре. На 11 января'26 уже 338 каналов и 400 тысяч видео - за счет народного добавления каналов.
Это не попытка объять необъятное, а минимальный объём, с которым уже можно что-то тестировать.
Как это работает сейчас
В текущем MVP задействовано 5 скриптов:
- Публичная форма
Любой человек может отправить ссылку на YouTube-канал. Скрипт получает информацию о канале и список всех видео. - Скрипт сохранения канала
Забирает и сохраняет название канала и базовые метаданные. - Обработка видео
Проходит по всем видео канала и добавляет их в базу. - Загрузка превью
Скачивает превью-изображения для каждого видео. - Парсинг дат публикации
Нужен для сортировки — от новых видео к старым. Процесс медленный, по 10 видео в минуту. Поэтому сейчас не у всех видео есть дата.
За месяц работы сервиса уже сделаны заметки, что нужно улучшать. Осталось найти время на эти улучшения.
В качестве основы парсинга используется yt-dlp.
Народное наполнение базы
Чтобы ссылок становилось больше, форма добавления каналов сделана публичной.
Любой может добавить свои любимые каналы, если его ещё нет в базе.
После этого видео попадают в базу парсинга и становятся доступными для других пользователей — их можно найти через зеркало.
Поиск работает как по названию видео, так и по названию канала.
В январе я внедрил поиск и по самому ютубу на случаи, если в нашей базе нет нужного ответа - пытаемся найти прям в ютубе, выводим 100 результатов.
С какими проблемами я уже столкнулся
В процессе эксперимента вылезло несколько интересных моментов:
- Периодически слетают cookies
Из-за этого не парсятся видео с ограничениями доступа (только для авторизованных). - Некоторые видео пишет, что вообще не доступны.
Т.е. ссылка на них есть в плейлисте, на деле же видео не доступны вообще для просмотра. - Проблемы с языком названий
Некоторые видео сохраняются с английским названием вместо русского. Похоже, у роликов указано несколько языков, и парсер берёт значение по умолчанию. Для этого пришлось сделать отдельный скрипт, который также обрабатывает по 10 видео в минуту. - Ограниченные ресурсы
Очевидно, что моя текущая инфраструктура не рассчитана на «все видео YouTube». Но пока работает.Это именно эксперимент и проверка гипотезы, надо ли это вообще.
Что это вообще такое
Проект не хранит видеофайлы, а только индексирует публично доступные метаданные (названия, ссылки, превью), чтобы получить их без лишних заморочек. Это может быть полезно вашим родственникам ;)
Потрогать MVP
Нужно нам такое?
Есть ли у него практическое применение?
В какую сторону логично развивать?