Скачиваем и смотрим YouTube на своём хостинге
- пятница, 15 ноября 2024 г. в 00:00:10
У пользователей в РФ возникли затруднения с доступом к YouTube. Причины известны, как и варианты решения. Однако это битва кота и мыши: ТСПУ эволюционируют, и популярные инструменты часто перестают работать.
Чуть надёжнее использовать свою инфраструктуру в зарубежном дата-центре. Так можно скачать контент с YouTube на свой сервер, а оттуда раздать трафик внутри РФ любым удобным способом без всяких «замедлений».
Получается что-то вроде зарубежного прокси для YouTube. И это совершенно легально (пока).
Система простая: поднимаем дешёвый сервер в любом зарубежном дата-центре. Например, двухъядерный сервер от RUVDS в немецком ДЦ под Ubuntu 22.04 (2 ГБ RAM, 20 ГБ HDD, выделенный IP-адрес) обошелся мне в 1358 рублей в месяц. Аналогичные варианты есть у FirstVDS и Timeweb, например в Нидерландах (вот тут можете найти мой недавний обзор на эти серверы).
Получив сервер за рубежом, скачиваем туда любые видеоролики YouTube без всяких «замедлений».
Первый вариант получить «запретный» контент — поставить простую скачивалку файлов. Например, утилиту yt-dlp.
Установка под Ubuntu из официального репозитория:
$ sudo apt install yt-dlp
Напрямую с GitHub:
$ sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
$ sudo chmod a+rx /usr/local/bin/yt-dlp
Через питоновский пакетный менеджер Pip:
$ python3 -m pip install -U yt-dlp
Минималистичная установка без необязательных зависимостей:
$ python3 -m pip install --no-deps -U yt-dlp
Вместе с yt-dlp желательно поставить ещё ffmpeg для постпроцессинга (транскодирование, редактирование). Две утилиты командной строки хорошо работают в связке.
$ sudo apt-get install ffmpeg
Для удобства использования можно установить также ytdl-webserver, веб-сервер для yt-dlp. Просто заходим на свой VPS по выделенному IP-адресу, вводим URL видеоролика на YouTube — и спокойно скачиваем его.
NewPipe — известный опенсорсный клиент для YouTube под Android, который позволяет просматривать YouTube без рекламы и удобно скачивать видео/аудио из любого канала — вышел под Linux. Это не отдельная версия клиента, а оригинальная Android-версия, которая работает через Android Translation Layer (ATL).
Кстати, недавно вышел NewPipeX — форк NewPipe, написанный на старой оригинальной кодовой базе до массивной переделки старого NewPipe с интегрированной функциональностью SponsorBlock и Return YouTube Dislike, которых нет в NewPipe. То есть NewPipeX — это в своём роде «классическая» версия NewPipe. Возможно, она тоже заработает под Linux через слой ATL, как и другие Android-приложения:
Разумеется, есть и нативные десктопные YouTube-клиенты, такие как FreeTube:
Консольные инструменты для скачивания контента с YouTube берут своё начало с питоновской утилиты youtube-dl, которую написал испанский разработчик Рикардо Гарсия Гонсалес в 2006 году. Этот проект поставил абсолютный рекорд GitHub по количеству звёзд, сейчас у самого популярного форка более 132 тыс. звёзд.
После длительного преследования со стороны правообладателей из RIAA разработку утилиты пришлось прекратить в 2021 году. Проект по запросу DMCA был удалён с GitHub (как известно, этот хостинг кода принадлежит корпорации Microsoft). В августе 2023 года немецкий хостер Uberspace конфисковал веб-домен, на котором размещался сайт.
Популярный опенсорсный проект не умер: были сделаны сотни форков, написаны десятки альтернативных инструментов, а исходный код сохранён на сотнях зеркал. Самый популярный форк назывался youtube-dlc (от слова «community»). С января 2021-го программу переименовали в yt-dlp, она и получила максимальную известность. Её даже включили в дистрибутив Ubuntu 22.04, а потом заменили пустым пакетом с зависимостью yt-dlp, чтобы у правообладателей не возникало претензий.
Вот некоторые другие альтернативы youtube-dl и yt-dlp (приводим здесь только опенсорсные бесплатные программы:
StreamRecorder.NET — риперер стримов, который производит запись и сохранение любых медиапотоков. Универсальный инструмент работает с разными сайтами, поддерживает постобработку с подключением сторонних программ. Полная автоматизация через утилиту командной строки, автоматический запуск окон для записи потоков по расписанию.
Invidious — альтернативный фронтенд для YouTube, можно установить на своём сервере. Отлично работает в связке с десктопным клиентом FreeTube, который устанавливается на персоналках — и загружает видео через Invidious-прокси, установленный на заграничном VPS:
JDownloader — менеджер загрузок, частично с открытым кодом. Это универсальный менеджер, где YouTube поддерживается как одна из многочисленных опций для скачивания файлов. Программа вышла в далёкие 2000-е годы, почти одновременно с оригинальной версией youtube-dl. Из особенностей: графический интерфейс, умеет автоматически решать некоторые капчи, работает под всеми ОС, автоматическое извлечение из RAR с вводом пароля, смена IP-адресов для хостеров с ограничением загрузки для IP, специфические плагины для конкретных файлохостингов, расшифровка контейнеров RSDF, CCF и DLC.
Перехватывает ссылки из буфера обмена — и загружает весь доступный контент:
ClipGrab — ещё один древний менеджер загрузок видео с разных сайтов с графическим интерфейсом, умеет конвертировать видео в разные форматы при сохранении.
You-Get — очень простая консольная утилита для выкачивания медиафайлов с десятков разных сайтов, включая YouTube:
$ you-get 'https://www.youtube.com/watch?v=jNQXAC9IVRw'
site: YouTube
title: Me at the zoo
stream:
- itag: 43
container: webm
quality: medium
size: 0.5 MiB (564215 bytes)
# download-with: you-get --itag=43 [URL]
Downloading Me at the zoo.webm ...
100% ( 0.5/ 0.5MB) ├██████████████████████████████████┤[1/1] 6 MB/s
Saving Me at the zoo.en.srt ... Done.
You-Get принимает на вход любые URL. Может скрапить веб-страницы — и автоматически выкачивать весь медиаконтент, который найдёт. Более того, принимает поисковые запросы, ищет подходящее видео в интернете и выкачивает его:
$ you-get "Richard Stallman eats"
Во многом по синтаксису и функциям похож на yt-dlp. Перенаправление видеопотока в плеер VLC вместо скачивания в файл:
$ you-get -p vlc 'https://www.youtube.com/watch?v=jNQXAC9IVRw'
Просмотр в браузере:
$ you-get -p chromium 'https://www.youtube.com/watch?v=jNQXAC9IVRw'
Есть клиенты YouTube с закрытым кодом, некоторые выпускают бесплатную версию с ограниченной скоростью скачивания, а полноценную программу продают за деньги.
Существуют также разные варианты графических интерфейсов для yt-dlp и других консольных инструментов: например, media-downloader, yt-dlg или ytdlp-gui:
Полный список команд yt-dlp (для начинающих) включает десятки самых популярных команд. Вот некоторые из них, которые закрывают основные потребности большинства пользователей.
$ yt-dlp https://www.youtube.com/watch?v=t5b20oLaIaw
Скачать в конкретную папку:
$ yt-dlp -o '~/Downloads/Abdul Kalam Biography' https://www.youtube.com/watch?v=t5b20oLaIaw
Включить в имя файла дополнительные сведения, такие как заголовок, имя «автора» (который залил видео на хостинг), дата загрузки и название плейлиста:
$ yt-dlp -o '%(title)s by %(uploader)s on %(upload_date)s in %(playlist)s.%(ext)s' https://www.youtube.com/watch?v=t5b20oLaIaw
$ yt-dlp <url1> <url2>
или
$ yt-dlp -a url.txt
$ yt-dlp -x https://www.youtube.com/watch?v=t5b20oLaIaw
Скачать аудио в лучшем доступном качестве:
$ yt-dlp -f bestaudio <URL>
Скачать видео и аудио в лучшем доступном качестве, а потом склеить их в один файл:
$ yt-dlp -f bestvideo+bestaudio <URL>
$ yt-dlp -F https://www.youtube.com/watch?v=t5b20oLaIaw
Список содержит исчерпывающую информацию о файлах, включая названия кодеков, размеры файлов, разрешение и проч.
$ yt-dlp -o - "https://www.youtube.com/watch?v=t5b20oLaIaw" | vlc -
Шпаргалка:
Дополнительно:
yt2pc, конвертация плейлистов в подкасты
Функциональность yt-dlp не ограничивается только YouTube. Программа умеет скачивать видео и аудио со всех популярных хостингов, поддерживает ffmpeg и т. д., позволяет указывать минимальный и максимальный размеры файлов для скачивания множественных видео из плейлистов, скачивать видеоролики в заданном диапазоне дат, возобновлять скачивание после остановки и многое другое.
Программа yt-dlp немножко отличается от оригинального youtube-dl и youtube-dlc. Например, она работает на новом Python 3.7+, а не на старых версиях. Немножко отличается формат некоторых опций и др.
Кроме простой скачивалки файлов, можно поставить в зарубежном дата-центре полноценный медиасервер, который будет раздавать контент на любые устройства, включая компьютеры, смартфоны и телевизоры. Вот некоторые примеры таких медиасерверов:
Plex;
и др.
Но чисто технически удобнее скачать контент с VPS на сервер в локальной сети, и раздавать контент уже отсюда, чтобы не возникало узких мест в трансляции видео 4K на несколько устройств, например.
Для синхронизации файлов на VPS и домашнем сервере подойдёт любая утилита для синхронизации и резервного копирования, как Syncthing.
Как уже упоминалось выше, на своём сервере можно установить альтернативный фронтенд для YouTube, такой как Invidious, он успешно работает в качестве прокси (инструкция по установке).