- PVSM.RU - https://www.pvsm.ru -

Скачиваем и смотрим YouTube на своём хостинге

У пользователей в РФ возникли затруднения с доступом к YouTube. Причины известны, как и варианты решения. Однако это битва кота и мыши: ТСПУ эволюционируют, и популярные инструменты часто перестают работать.

Скачиваем и смотрим YouTube на своём хостинге - 1

Чуть надёжнее использовать свою инфраструктуру в зарубежном дата-центре. Так можно скачать контент с YouTube на свой сервер, а оттуда раздать трафик внутри РФ любым удобным способом без всяких «замедлений».

Получается что-то вроде зарубежного прокси для YouTube. И это совершенно легально (пока).

Система простая: поднимаем дешёвый сервер в любом зарубежном дата-центре. Например, двухъядерный сервер от RUVDS в немецком ДЦ под Ubuntu 22.04 (2 ГБ RAM, 20 ГБ HDD, выделенный IP-адрес) обошелся мне в 1358 рублей в месяц. Аналогичные варианты есть у FirstVDS и Timeweb, например в Нидерландах (вот тут можете найти мой недавний обзор [1] на эти серверы). 

Получив сервер за рубежом, скачиваем туда любые видеоролики YouTube без всяких «замедлений».

yt-dlp

Первый вариант получить «запретный» контент — поставить простую скачивалку файлов. Например, утилиту yt-dlp [2].

Установка под Ubuntu из официального репозитория:

$ sudo apt install yt-dlp
Скачиваем и смотрим YouTube на своём хостинге - 2

Напрямую с 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 [3] для постпроцессинга (транскодирование, редактирование). Две утилиты командной строки хорошо работают в связке.

$ sudo apt-get install ffmpeg

Для удобства использования можно установить также ytdl-webserver [4], веб-сервер для yt-dlp. Просто заходим на свой VPS [5] по выделенному IP-адресу, вводим URL видеоролика на YouTube — и спокойно скачиваем его.

Скачиваем и смотрим YouTube на своём хостинге - 3

NewPipe под Linux

NewPipe — известный опенсорсный клиент для YouTube под Android, который позволяет просматривать YouTube без рекламы и удобно скачивать видео/аудио из любого канала — вышел под Linux [6]. Это не отдельная версия клиента, а оригинальная Android-версия, которая работает через Android Translation Layer [7] (ATL).

Кстати, недавно вышел NewPipeX [8] — форк NewPipe, написанный на старой оригинальной кодовой базе до массивной переделки старого NewPipe [9] с интегрированной функциональностью SponsorBlock и Return YouTube Dislike, которых нет в NewPipe. То есть NewPipeX — это в своём роде «классическая» версия NewPipe. Возможно, она тоже заработает под Linux через слой ATL, как и другие Android-приложения:

Скачиваем и смотрим YouTube на своём хостинге - 4

Разумеется, есть и нативные десктопные YouTube-клиенты, такие как FreeTube [10]:

Скачиваем и смотрим YouTube на своём хостинге - 5

Форки и альтернативы

Консольные инструменты для скачивания контента с YouTube берут своё начало с питоновской утилиты youtube-dl [11], которую написал испанский разработчик Рикардо Гарсия Гонсалес в 2006 году. Этот проект поставил абсолютный рекорд GitHub по количеству звёзд, сейчас у самого популярного форка более 132 тыс. звёзд [12].

Скачиваем и смотрим YouTube на своём хостинге - 6

После длительного преследования со стороны правообладателей из RIAA разработку утилиты пришлось прекратить в 2021 году. Проект по запросу DMCA был удалён с GitHub [13] (как известно, этот хостинг [5] кода принадлежит корпорации Microsoft). В августе 2023 года немецкий хостер [5] Uberspace конфисковал веб-домен, на котором размещался сайт.

Популярный опенсорсный проект не умер: были сделаны сотни форков, написаны десятки альтернативных инструментов, а исходный код сохранён на сотнях зеркал. Самый популярный форк назывался youtube-dlc (от слова «community»). С января 2021-го программу переименовали в yt-dlp [14], она и получила максимальную известность. Её даже включили в дистрибутив Ubuntu 22.04, а потом заменили пустым пакетом с зависимостью yt-dlp, чтобы у правообладателей не возникало претензий.

Вот некоторые другие альтернативы youtube-dl и yt-dlp (приводим здесь только опенсорсные бесплатные программы:

  • StreamRecorder.NET [15] — риперер стримов, который производит запись и сохранение любых медиапотоков. Универсальный инструмент работает с разными сайтами, поддерживает постобработку с подключением сторонних программ. Полная автоматизация через утилиту командной строки, автоматический запуск окон для записи потоков по расписанию.

    Скачиваем и смотрим YouTube на своём хостинге - 7
  • Invidious [16] — альтернативный фронтенд для YouTube, можно установить на своём сервере [17]. Отлично работает в связке с десктопным клиентом FreeTube [10], который устанавливается на персоналках — и загружает видео через Invidious-прокси, установленный на заграничном VPS [5]:

    Скачиваем и смотрим YouTube на своём хостинге - 8
  • JDownloader [18] — менеджер загрузок, частично с открытым кодом. Это универсальный менеджер, где YouTube поддерживается как одна из многочисленных опций для скачивания файлов. Программа вышла в далёкие 2000-е годы, почти одновременно с оригинальной версией youtube-dl. Из особенностей: графический интерфейс, умеет автоматически решать некоторые капчи, работает под всеми ОС, автоматическое извлечение из RAR с вводом пароля, смена IP-адресов для хостеров с ограничением загрузки для IP, специфические плагины для конкретных файлохостингов, расшифровка контейнеров RSDF, CCF и DLC.

    Перехватывает ссылки из буфера обмена — и загружает весь доступный контент:

    Скачиваем и смотрим YouTube на своём хостинге - 9
  • ClipGrab [19] — ещё один древний менеджер загрузок видео с разных сайтов с графическим интерфейсом, умеет конвертировать видео в разные форматы при сохранении.

  • You-Get [20] — очень простая консольная утилита для выкачивания медиафайлов с десятков разных сайтов, включая 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 [21], yt-dlg [22] или ytdlp-gui [23]:

Скачиваем и смотрим YouTube на своём хостинге - 10

Список команд yt-dlp

Полный список команд yt-dlp [24] (для начинающих) включает десятки самых популярных команд. Вот некоторые из них, которые закрывают основные потребности большинства пользователей.

Скачать видео или плейлист

$ yt-dlp https://www.youtube.com/watch?v=t5b20oLaIaw

Скачать в конкретную папку:

$ yt-dlp -o '~/Downloads/Abdul Kalam Biography' https://www.youtube.com/watch?v=t5b20oLaIaw

Включить в имя файла дополнительные сведения, такие как заголовок, имя «автора» (который залил видео на хостинг [5]), дата загрузки и название плейлиста:

$ 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

Список содержит исчерпывающую информацию о файлах, включая названия кодеков, размеры файлов, разрешение и проч.

Транслировать видео напрямую в медиаплеер VLC

$ yt-dlp -o - "https://www.youtube.com/watch?v=t5b20oLaIaw" | vlc -

Шпаргалка:

Скачиваем и смотрим YouTube на своём хостинге - 11

Дополнительно:

Функциональность yt-dlp не ограничивается только YouTube. Программа умеет скачивать видео и аудио со всех популярных хостингов, поддерживает ffmpeg [3] и т. д., позволяет указывать минимальный и максимальный размеры файлов для скачивания множественных видео из плейлистов, скачивать видеоролики в заданном диапазоне дат, возобновлять скачивание после остановки и многое другое.

Программа yt-dlp немножко отличается от оригинального youtube-dl [11] и youtube-dlc. Например, она работает на новом Python 3.7+, а не на старых версиях. Немножко отличается формат некоторых опций и др.

Кроме простой скачивалки файлов, можно поставить в зарубежном дата-центре полноценный медиасервер, который будет раздавать контент на любые устройства, включая компьютеры, смартфоны и телевизоры. Вот некоторые примеры таких медиасерверов:

Но чисто технически удобнее скачать контент с VPS [5] на сервер в локальной сети, и раздавать контент уже отсюда, чтобы не возникало узких мест в трансляции видео 4K на несколько устройств, например.

Для синхронизации файлов на VPS [5] и домашнем сервере подойдёт любая утилита для синхронизации и резервного копирования, как Syncthing [30].

Как уже упоминалось выше, на своём сервере можно установить альтернативный фронтенд для YouTube, такой как Invidious [16], он успешно работает в качестве прокси (инструкция по установке [17]).

Автор: Qusi

Источник [31]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/youtube-2/402196

Ссылки в тексте:

[1] недавний обзор: https://habr.com/ru/articles/856398/

[2] yt-dlp: https://github.com/yt-dlp/yt-dlp

[3] ffmpeg: https://www.ffmpeg.org/

[4] ytdl-webserver: https://github.com/Algram/ytdl-webserver

[5] VPS: https://www.reg.ru/?rlink=reflink-717

[6] вышел под Linux: https://flathub.org/apps/net.newpipe.NewPipe

[7] Android Translation Layer: https://gitlab.com/android_translation_layer/android_translation_layer/

[8] NewPipeX: https://github.com/NewPipeX/NewPipeX

[9] массивной переделки старого NewPipe: https://github.com/TeamNewPipe/NewPipe/discussions/10118

[10] FreeTube: https://freetubeapp.io/

[11] youtube-dl: https://ytdl-org.github.io/youtube-dl/

[12] более 132 тыс. звёзд: https://github.com/ytdl-org/youtube-dl

[13] удалён с GitHub: https://github.com/github/dmca/blob/master/2020/10/2020-10-23-RIAA.md

[14] переименовали в yt-dlp: https://github.com/yt-dlp/yt-dlp/releases/tag/2021.01.16

[15] StreamRecorder.NET: https://sourceforge.net/projects/streamrecnet/

[16] Invidious: https://invidious.io/

[17] на своём сервере: https://docs.invidious.io/installation/

[18] JDownloader: http://www.jdownloader.org/

[19] ClipGrab: https://clipgrab.org/

[20] You-Get: https://you-get.org/

[21] media-downloader: https://github.com/mhogomchungu/media-downloader

[22] yt-dlg: https://oleksis.github.io/youtube-dl-gui/

[23] ytdlp-gui: https://github.com/BKSalman/ytdlp-gui

[24] Полный список команд yt-dlp: https://ostechnix.com/yt-dlp-tutorial/

[25] Коллекция скриптов для yt-dlp: https://github.com/TheFrenchGhosty/TheFrenchGhostys-Ultimate-YouTube-DL-Scripts-Collection

[26] yt2pc: https://github.com/cquintana92/yt2pc

[27] Plex: https://www.plex.tv/

[28] Jellyfin: https://github.com/jellyfin/jellyfin

[29] Kodi (XBMC): https://github.com/xbmc/xbmc

[30] Syncthing: https://syncthing.net/

[31] Источник: https://habr.com/ru/articles/857964/?utm_campaign=857964&utm_source=habrahabr&utm_medium=rss