Эксперимент: зеркало youtube
Сервисов для скачивания видео с YouTube — десятки, если не сотни.
Но почти все они начинаются с одного условия: у вас уже должна быть ссылка на видео.
А какой от них толк, если ссылки нет?
Вы помните тему, канал, примерное название. Но не ссылку на ролик.
Я подумал: а что если сделать максимально простое зеркало YouTube — без рекомендаций, алгоритмов и ленты.
Просто: каналы → видео → ссылка.
Я собрал MVP (ссылка в конце статьи).
В чём идея?
Если собрать это в одну базу, то видео можно:
- Найти через поиск
- Скопировать ссылку
- Скачать и сохранить для просмотра через спец. сервисы
Без танцев с бубном и без необходимости сначала идти на ютуб.
Самая большая проблема - база данных
Для эксперимента я спарсил около 80 каналов и получил чуть больше 100 000 ссылок на видео.
Это не попытка объять необъятное, а минимальный объём, с которым уже можно что-то тестировать.
Как это работает сейчас
В текущем MVP задействовано 5 скриптов:
- Публичная форма
Любой человек может отправить ссылку на YouTube-канал. Скрипт получает информацию о канале и список всех видео. - Скрипт сохранения канала
Забирает и сохраняет название канала и базовые метаданные. - Обработка видео
Проходит по всем видео канала и добавляет их в базу. - Загрузка превью
Скачивает превью-изображения для каждого видео. - Парсинг дат публикации
Нужен для сортировки — от новых видео к старым. Процесс медленный, по 10 видео в минуту. Поэтому сейчас не у всех видео есть дата.
В качестве основы парсинга используется yt-dlp.
Народное наполнение базы
Чтобы ссылок становилось больше, форма добавления каналов сделана публичной.
Любой может добавить свои любимые каналы, если его ещё нет в базе.
После этого видео попадают в базу парсинга и становятся доступными для других пользователей — их можно найти через зеркало и скачать для просмотра.
Поиск работает как по названию видео, так и по названию канала.
С какими проблемами я уже столкнулся
В процессе эксперимента вылезло несколько интересных моментов:
- Периодически слетают cookies
Из-за этого не парсятся видео с ограничениями (18+). - Некоторые видео пишет, что вообще не доступны
Пока таких около 10 штук (на 130 тысяч). - Проблемы с языком названий
Некоторые видео сохраняются с английским названием вместо русского. Похоже, у роликов указано несколько языков, и парсер берёт значение по умолчанию. Решение, вероятно, есть — пока не копал в эту сторону. - Не нашёл удобного способа парсить только новые видео
Хотелось бы: знаю дату последнего парсинга канала → забираю только свежие ролики. Но решения для этого пока не нашёл. - Ограниченные ресурсы
Очевидно, что моя текущая инфраструктура не рассчитана на «все видео YouTube». Но пока работает.Это именно эксперимент и проверка гипотезы, надо ли это вообще.
Что это вообще такое
Это попытка решить собственную задачу - посмотреть видео без обходных путей.
Потрогать MVP: https://bdme.ru/LOxK6kM
Нужно нам такое?
Есть ли у него практическое применение?
В какую сторону логично развивать?
Есть за что заблокировать?