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

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

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

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

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

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

Я собрал MVP (ссылка в конце статьи).

В чём идея?

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

  • Найти через поиск
  • Скопировать ссылку
  • Скачать и сохранить для просмотра через спец. сервисы

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

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

Для эксперимента я спарсил около 80 каналов и получил чуть больше 100 000 ссылок на видео.

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

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

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

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

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

В качестве основы парсинга используется yt-dlp.

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

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

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

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

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

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

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

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

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

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

Это попытка решить собственную задачу - посмотреть видео без обходных путей.

Потрогать MVP: https://bdme.ru/LOxK6kM

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

1
Начать дискуссию