Мы уже обсуждали, как удобнее всего скачивать видео с YouTube для дальнейшего просмотра и хранения. Но если коллекция файлов становится слишком большой, то нужно их как-то организовать: по темам или тегам, по каналам, категориям, чтобы быстро найти нужный видеоролик. И желательно настроить сервер так, чтобы раздавать это видео по локальной сети или через интернет.
В итоге получается, что мы делаем нечто вроде маленькой копии YouTube, только на своём сервере. В определённом смысле это архивная копия на случай удаления видеоконтента из-за цензуры YouTube. Или на случай, если серверы YouTube станут недоступны с территории РФ из-за какого-то «технического сбоя».
Зачем это нужно
Во-первых, YouTube обильно заполнен различными трекерами и скриптами для отслеживания каждого вашего нажатия. Всё это регистрируется и сохраняется в профиль, которым Google делится с рекламодателями (точно так же отслеживаются все действия в браузере Chrome). Например, вы один раз в жизни посмотрели что-то неприглядное — и это навсегда сохранится, вам будут периодически показывать рекламу на эту тему и подсовывать видео в рекомендациях.
Во-вторых, найти что-то на YouTube труднее, чем иголку в стоге сена, потому что поиск там очень плохо реализован. Лучше самостоятельно разложить всё по полочкам и сделать нормальный полнотекстовый поиск по метаданным в собственном хранилище.
Таким образом, гораздо проще оказывается скачать всё, что нужно, с помощью yt-dlp — и работать с видеоархивом локально, в домашнем архиве. Однако со временем коллекция разрастается и становится трудно отслеживать, что просмотрено, что вышло свежего, и найти нужные видеозаписи.
Tube Archivist
Как раз для создания домашнего архива из видеороликов YouTube создана программа Tube Archivist (на базе
yt-dlp
).Базовая функциональность:
- подписка на любые каналы YouTube;
- скачивание видеофайлов;
- индексация метаданных и поиск по ним;
- воспроизведение видео;
- отслеживание, какие видеофайлы в подписке вы просмотрели, а какие нет.
Минимальные системные требования — двухъядерный CPU (четыре потока), 2 ГБ оперативной памяти (для тестирования) или 4 ГБ (для работы).
В реальности чем больше памяти в системе, тем лучше, потому что для Tube Archivist (TA) обязательно требуется Docker. Сама программа разбита на три основных компонента в разных контейнерах. Соответственно, установка софта сводится по большей мере к редактированию файла docker-compose.yml:
version: '3.3'
services:
tubearchivist:
container_name: tubearchivist
restart: unless-stopped
image: bbilly1/tubearchivist
ports:
- 8000:8000
volumes:
- media:/youtube
- cache:/cache
environment:
- ES_URL=http://archivist-es:9200 # needs protocol e.g. http and port
- REDIS_HOST=archivist-redis # don't add protocol
- HOST_UID=1000
- HOST_GID=1000
- TA_HOST=tubearchivist.local # set your host name
- TA_USERNAME=tubearchivist # your initial TA credentials
- TA_PASSWORD=verysecret # your initial TA credentials
- ELASTIC_PASSWORD=verysecret # set password for Elasticsearch
- TZ=America/New_York # set your time zone
depends_on:
- archivist-es
- archivist-redis
archivist-redis:
image: redis/redis-stack-server
container_name: archivist-redis
restart: unless-stopped
expose:
- "6379"
volumes:
- redis:/data
depends_on:
- archivist-es
archivist-es:
image: bbilly1/tubearchivist-es # only for amd64, or use official es 8.9.0
container_name: archivist-es
restart: unless-stopped
environment:
- "ELASTIC_PASSWORD=verysecret" # matching Elasticsearch password
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "xpack.security.enabled=true"
- "discovery.type=single-node"
- "path.repo=/usr/share/elasticsearch/data/snapshot"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es:/usr/share/elasticsearch/data # check for permission error when using bind mount, see readme
expose:
- "9200"
volumes:
media:
cache:
redis:
es:
Здесь всего шесть обязательных полей:
-
TA_HOST
— IP-адрес или имя хоста сервера;
-
TA_USERNAME
— первоначальное имя пользователя для авторизации в Tube Archivist;
-
TA_PASSWORD
— первоначальный пароль для авторизации в Tube Archivist;
-
ELASTIC_PASSWORD
— пароль к ElasticSearch;
-
REDIS_HOST
— имя хоста для Redis;
-
TZ
— часовой пояс для шедулера.
Всё остальное опционально.
Более детальные инструкции по установке на Unraid, Synology, Podman и True NAS см. в документации проекта.
Презентация:
▍ Расширение для браузера
Для удобного взаимодействия с сервером, а также скачивания видео с YouTube разработано расширение Tube Archivist Companion:
Расширение добавляет в интерфейс YouTube несколько управляющих элементов для скачивания видео в одно нажатие кнопки, а также для подписки на канал внутри TA.
Для работы расширения требуется инстанс с последней версией TA, потому что API подвержен изменениям.
▍ Импорт метаданных c YouTube
Кроме самого видеофайла, TA скачивает с YouTube метаданные для него. Они сохраняются локально и индексируются для быстрого полнотекстового поиска.
Кроме того, по метаданным можно организовать/сортировать свою коллекцию.
Вся работа организована через веб-интерфейс, а доступ к хранилищу возможен с удалённого компьютера через браузер. Таким образом можно посмотреть любое видео со своего сервера или предоставить ссылку для просмотра родственникам и друзьям.
Другие медиасерверы
В каком-то смысле функциональность TA пересекается с функциональностью стандартных медиасерверов, таких как Plex, Jellyfin, Kodi (XBMC) и др. В принципе, их можно использовать в связке друг с другом: TA — для скачивания видео, организации коллекции и полнотекстового поиска по ней, а Plex или другой медиасервер — непосредственно для видеотрансляции.
Kodi
Как вариант, вся коллекция ютубовских видео хранится в коллекции TA, а другой медиасервер отвечает за весь остальной контент из других источников (с торрентов, Netflix и других видеосервисов, откуда вы копируете и сохраняете видео). В этом есть определённый смысл, потому что в «локальный YouTube» тематически отличается от видеоколлекции с кинофильмами.
«Локальный YouTube» — это передачи, документальные видео и домашние видео, записанные на телефон, видеорегистратор, хедкам и др. С другой стороны, функциональный видеосервер — это в основном кинофильмы в высоком разрешении. Там уже есть функции, которые отсутствуют в TA, в том числе настройки транскодирования и битрейта, уровень допустимой нагрузки на CPU и др.
Но вообще лучше всего установить плагин Tube Archivist для интеграции с Plex. В этом случае сканер и агент Tube Archivist работают вместе с Plex, распознают все видео, включая метаданные, и добавляют их в библиотеку Plex для просмотра и трансляции стандартным способом (TA должен быть запущен во время сканирования файловой системы и обновления метаданных).
Разработчик подчёркивает, что в данный момент возможна интеграция Plex только с одним инстансом TA, поддержку нескольких библиотек добавят в будущую версию плагина, также как поддержку плейлистов.
Кроме Plex, разработана также интеграция с Jellyfin.
Папка Tube Archivist после импорта в Jellyfin
Каждый канал YouTube импортируется как сериал, а каждый год архива — как сезон сериала. Из TA импортируются названия, описания и дата видео, название и описание канала.
Примечание. Скачанный с YouTube контент хранится в папке Docker. Эта папка может вырасти до очень большого размера, потому что TA скачивает всё содержимое каналов, так что к этому следует быть готовым, то есть подготовить хранилище соответствующего размера. В реальности TA не очень приспособлен для работы на среднем ПК, это инструмент для серьёзного архивирования контента — десятки и сотни терабайт видео. Скорее можно представить, что какой-то провайдер устанавливает его на своих серверах, чтобы обеспечить «зеркало» YouTube для своих абонентов, которым недоступен оригинальный YouTube.
В частном использовании, скорее всего, для работы с TA понадобится полноценный NAS с несколькими большими HDD. Так что это не обычный плеер типа Plex, а более серьёзная штука. Стоит добавить, что Tube Archivist использует поисковый движок ElasticSearch, а его индекс автоматически закрывается от записи в read only, если занятое место на диске достигает показателя 95% (статус read only сохраняется до тех пор, пока уровень не опустится до 90%). В целом, при сильном заполнении диска TA выдаёт много разных ошибок.
Просто yt-dlp
В большинстве случаев можно заменить Tube Archivist на обычный yt-dlp. Написать простой баш-скрипт для проверки обновлений по списку каналов со скачиванием новых видеороликов, которые добавляются в библиотеку Plex или Jellyfin. Вот пример такого скрипта для скачивания пяти последних видеороликов по списку каналов. Чтобы узнать RSS какого-то канала YouTube, нужно вставить URL этого канала в RSS-ридер, потом адрес RSS добавляем в скрипт для скачивания.
#!/usr/bin/env bash
if [ ! -f "/input/feeds.txt" ]
then
>&2 echo "Failed to open file /input/feeds.txt. Exiting."
exit 1
fi
if [ ! -d "/output" ]
then
>&2 echo "Failed to switch to directory /output. Exiting."
exit 1
fi
cd /output
grep "^[^#;]" /input/feeds.txt | while read feed
do
echo "[ytdl-pvr] Downloading feed: $feed"
# Grab the RSS feed from YouTube, grab the recent video URLs, and use yt-dlp to download the video
# The following arguments are used to download 1080p H.264 videos with AAC audio,
# such that they can be natively played on devices released within the last 10 years while still having
# good quality:
# --format, --remux-video, --merge-output-video
# The following arguments are used to write thumbnail and metadata to be compatible with Jellyfin.
# --write-thumbnail, --convert-thumbnails, --embed-thumbnail, --embed-metadata, --embed-subs
# To help Jellyfin sorting videos by release date, --no-mtime is set to prevent e.g. edits to
# video comments from making a video seem to be released more recently
# To prevent the script failing when feeds include a future video, --datebefore now is set
curl --fail-with-body -L -s "$feed" | xq -r '.feed.entry[0:5] | .[].link."@href"' | yt-dlp \
--batch-file - \
--output="%(channel)s/%(upload_date)s %(title)s [%(id)s].%(ext)s" \
--download-archive .ytdl-pvr-archive.txt \
--continue \
--no-progress \
--format 'bestvideo[vcodec^=avc1]+bestaudio[acodec^=mp4a]' \
--remux-video "mp4" \
--merge-output-format "mp4" \
--no-mtime \
--no-cache-dir \
--write-thumbnail \
--convert-thumbnails jpg \
--embed-thumbnail \
--embed-metadata \
--embed-subs \
--sub-lang en,en.* \
--datebefore now
# Continue processing in case of a processing error
continue
done
Здесь
yt-dlp
скачивает видеоролики в формате 1080p H.264, так что они не займут много места. Хотя в TA тоже можно выбрать формат видео по умолчанию, например, bestvideo[vcodec*=avc1]+bestaudio[acodec*=mp4a]/mp4
. Как известно,
yt-dlp
тоже умеет копировать метаданные. В приведённом скрипте опция --download-archive .ytdl-pvr-archive.txt
проверяет список сохранённых файлов, чтобы не скачивать их повторно. Можно ещё запустить дополнительный скрипт, который будет удалять старые видеоролики, например, возрастом более месяца. Так можно автоматизировать просмотр YouTube в офлайне на обычном ПК без тяжеловесных инструментов архивирования вроде TA.См. также докер-контейнер ytdl-sub для автоматического скачивания видео и добавления его в Plex/Jellyfin/Kodi (примерно такой же скрипт, как выше, только в контейнере).
После настройки файлов конфигурации
config.yaml
и subscriptions.yaml
процесс запускается простой командой:ytdl-sub sub subscriptions.yaml
Контейнеры одинаково запускаются в любой ОС, где работает Docker (Linux, RPi, Win, Mac, etc).
Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх ????️
Комментарии (68)
eps
18.09.2023 18:17+11Главная причина архивировать Youtube — это риски потерять видео.
Каналы закрываются, видео удаляются, или редактируются после публикации. Часто из-за авторских прав. Из-за нового закона о цифровой рекламе русские ребята начнут удалять видео, просто чтобы за него не отчитываться.
Да и весь сайт может внезапно для нас исчезнуть по какой-нибудь удивительной причине.
Вот главная причина архивировать; а борьба с отслеживанием и поиск — это приятные мелочи
AnyKey80lvl
18.09.2023 18:17+1Ещё где-то читал, что старые и не очень популярные видео Ютуб со временем пережимает с худшим качеством, для экономии дискового пространства.
Если правда - ещё одна причина для локальной копии ролика.
PrinceKorwin
18.09.2023 18:17+6Это правда! Вот пытался найти клип ДДТ Осень и всё, что есть в ужасном качестве. В 4к ни одного не нашел :(
/Sarcasm
AnyKey80lvl
18.09.2023 18:17+1Там не так. Youtube пишет что качество, например, 720, но внутри само содержимое через время оказывается с меньшим битрейтом.
daggert
18.09.2023 18:17Интересно, а мб он горячие данные так жмет, чтоб оставлять в боевом режиме условные 480р под видом 720р, а по мере роста запросов достает из какого-нибудь холодного пленочного архива опять норм версию? Я-б сделал так
ssj100
18.09.2023 18:17что старые и не очень популярные видео Ютуб со временем пережимает с худшим качеством, для экономии дискового пространства.
Да - попал на такое, и никак не решить ведь заливал с более/меннее нормальным качеством
alexanderniki
18.09.2023 18:17Мне кажется, это все понимают. Вот только прямо писать о этом - это можно и по шапке получить. За "распространение информации о способах обхода блокировок". А так, вроде как, корпорацию из недружественной страны обманываем. И никаких вопросов)
AlexanderS
18.09.2023 18:17В большинстве случаев можно заменить Tube Archivist на обычный yt-dlp. Написать простой баш-скрипт для проверки обновлений по списку каналов со скачиванием новых видеороликов...
Вот именно — просто всё видео скачивается/обновляется в папку и всё. Имена файлов содержат название + можно дату в имя файла подставить. Ролики можно и так смотреть без всяких медиасерверов. И абсолютная портабельность — файлы можно скопировать куда угодно.
Dzmuh
18.09.2023 18:17+4Есть такая утилитка как Owez/yark: YouTube archiving made simple. (github.com)
Позволяет архивировать каналы, скачивать плейлисты, сохранять метаданные.
Очень легко цепляется к cron и его альтернативам.
И никакого еластиксерча .
maldalik
18.09.2023 18:17Он не работает, поставил расширение, у кнопки скачать красными ,уквами надпись error
Didimus
18.09.2023 18:17+7Локальная копия это путь в никуда. Нужна общественная распределенная копия, как с торрентами. Например, сохранить для детей мультфильмы на английском. А то ведь скоро свинку пеппу в оригинале будет не посмотреть. Вот и могли бы ответственные родители скооперироваться и сохранять локально-распределенно
axe_chita
18.09.2023 18:17+2Уже существует Peertube, децентрализованный, федеративный видеохостинг с открытым исходным кодом, основанный на технологиях ActivityPub и WebTorrent. И о нем уже рассказывали на Хабре.
Didimus
18.09.2023 18:17+2Такого рода проекты надо запускать централизованно, например, через крупнейшие торрент площадки. Иначе сеть из людей, знакомых лично, так и останется в масштабах домовой сети.
axe_chita
18.09.2023 18:17+1Централизованные узлы уязвимы для атаки:( К ним проще подобрать ключики, да и падение узла будет кардинальной проблемой.
Didimus
18.09.2023 18:17Через них распространить знания, и это будет выпуск джина
axe_chita
18.09.2023 18:17Либо через эти узлы можно будет осуществлять скрытую цензуру. :(
Didimus
18.09.2023 18:17Почему же? Если на главной странице торринт.ру вывести огромный баннер и сделать faq по теме, тут же проект начнёт лететь. Люди будут заказывать, что сохранить, как сейчас заказывают, что купить, рипнуть и перевести, например
IGR2014
18.09.2023 18:17+6Вы себе противоречите:
"Нужна общественная распределенная копия"
и
"Такого рода проекты надо запускать централизованно"
alexanderniki
18.09.2023 18:17Нужна общественная распределенная копия
Такого рода проекты надо запускать централизованно
Определиться бы, что в итоге хотим :)
alexanderniki
18.09.2023 18:17Так то да. Хотелось бы не просто себе в копилку. А так, чтобы в итоге получился независимый распределенный и дотупный для всех видеохостинг.
axe_chita
18.09.2023 18:17+1Как вариант, прикрутить к Youtube Archivist ретрансляцию скачанных видеороликов в Peertube
aik
18.09.2023 18:17+1Локальная копия делается для себя. Мне пофиг на свинкупеппу, к примеру. Я сохраняю только то, что интересно лично мне.
Didimus
18.09.2023 18:17Для себя можно и просто видео сохранять любым даунлоадером
aik
18.09.2023 18:17+2Можно, но автоматом оно удобнее получается.
Я архивиста настроил сохранять мои плейлисты и уже не раз бывало такое, что в плейлисте "видео удалено".
Чужие каналы я не ставлю на сохранение обычно, мало таких, где мне интересно вообще всё.13werwolf13
18.09.2023 18:17письмо с ютуба "на канале таком-то вышло видево" парсим скриптом в кроне, получаем ссылку на видево, забираем в yt-dlp с опцией добавляющей в имя файла имя канала, качаем
да, без свистопердельной вебморды, зато не жрёт ресурсы как добрый майнер.aik
18.09.2023 18:17Свистелки — наше всё. Мне не жалко ресурсы компьютера.
Да и не жрёт оно как майнер, в общем-то.
Кроме архивиста на компе куча всего запущена. Больше всего syncthing и duplicati кушают, да и те не сильно сказываются на загруженности процессора.
PrinceKorwin
18.09.2023 18:17Я ищу решение которое может работать на самой простой виртуалке за $3 в месяц.
И единственное, что пока рабочее это rsync + yt-dlp + своя обвязка скриптами
aik
18.09.2023 18:17Если не доверять облакам, то и виртуалкам тоже доверять не стоит. Тем более, что у "простой виртуалки" размер диска довольно ограничен.
С другой стороны, за те же три бакса (точнее — 55 баксов за два года) я имею пятиядерный VPS с 5 гигами ОЗУ и диском на 55 гигов. Далеко не самая слабая машинка, диска вот только не сильно много.
PrinceKorwin
18.09.2023 18:17-1Поэтому виртуалок несколько + мой ноут. И rsync который помогает все это синхрить.
aik
18.09.2023 18:17И за каждую платить по 3 бакса? Может лучше за 30 нормальный сервер взять?
PrinceKorwin
18.09.2023 18:17Иметь один не очень-то и безопасно. Дублирование наше всё.
И зачем платить 30 если и 3 достаточно за один сервер?
aik
18.09.2023 18:17Ну вот, уже 3 бакса в 25 превратились? Может лучше за эти же деньги арендовать одну-две, но более производительных, чтобы не приходилось каждый мегабайт памяти выжимать?
13werwolf13
18.09.2023 18:17да уж.. syncthing на десяток тер реально делает железу больно, особенно на старте.. давно хочу ему service override сделать ограничив в ресурсах, но руки не доходят
plsoft
18.09.2023 18:17+3Как быть с комментариями к видео. Зачастую комментарии имеют не меньшую ценность, особенно для технических роликов.
aik
18.09.2023 18:17+7А что, кто-то читает комментарии на ютубе? Что пишут — это я в курсе, но вот что читают...
vvbob
18.09.2023 18:17+1Да уж ценность коментов там.. Обычно это либо монотонные восхваления видео, неинтересные абсолютно, либо какая-то токсичная хейтерская хрень. Как по мне малоценная информация. Хотя, иногда, попадаются и крохи интересного, но очень уж иногда.
aik
18.09.2023 18:17Очень изредка. Даже описание не всегда читаешь, ибо у большинства популярных ютуберов оно состоит из рекламных ссылок.
Zorrina
18.09.2023 18:17+6Читает. Особенно, если там делятся техническими решениями какой-то проблемы.
user28764921384
18.09.2023 18:17Или на случай, если серверы YouTube станут недоступны с территории РФ из-за какого-то «технического сбоя».
В этом случае есть опыт передовых стран- Кубы, Ирана. Можно отдать жесткий диск, что бы туда закачали новинки фильмов, музыки, видео блогеров. Или сразу готовые флешки продавать можно.
Вот если кто-то захочет стать продавцом контента, тогда да. А так, людям вне айти проще будет купить готовую флешку или отдать жесткий диск для записи.
Draco-Zero
18.09.2023 18:17И все равно не очень понятна идея хранить YT у себя локально. Другое дело фильмы в 4к с торрентов.
vvbob
18.09.2023 18:17А что тут непонятного?
Ютуб последнее время уничтожил массу каналов по соображениям цензуры, видео с них стало недоступно, и не всегда оно есть где-то на альтернативных площадках. Кино в 4к, мне например не так интересно, как многие каналы в Ютубе. Я уж не говорю о смутных перспективах доступности Ютуба в принципе для России. Локальная копия совсем не лишняя. Понятно что не всего Ютуба, да оно все и не надо, там процентов 80% мусора неинтересного.
aik
18.09.2023 18:17+1Хранить не ютуб, а хранить интересное видео. И страницы. И вообще всё, что было полезно — ибо есть шансы, что оно пропадёт.
А фильмы в 4к в торрентах пусть там и хранятся.vvbob
18.09.2023 18:17+2Вообще, видимо, пора уже возвращаться к старым полезным привычкам эпохи раннего диалапного интернета: увидел что-то интересное - сохрани это локально.
byte46
18.09.2023 18:17+1Я от них так и не смог избавиться, чему сейчас несказанно рад. Парочка нужных видео с YouTube уже исчезла, а локально — лежа-а-ат…
Про всякую документацию вообще молчу, первым делом или скачивается, или перегоняется в PDF и аналоги.
daggert
18.09.2023 18:17+1С началом СВО так и произошло у меня. Никогда не думал что мне нужны будут видео Экстремальная Среда, некоторые выпуски Гоблина (ради гостей нормальных) или т.п., но вот наступил апрель 22го и у меня реально из закладок пропало половина. Причем никак не связанная с политикой или т.п.. Но цензура, с той стороны, решила что можно сносить все трактором. Обидно.
По итогу пришлось купить 8 дисков на 12ТБ и заполнить всем что мне может пригодится.
vvbob
18.09.2023 18:17Мне пока лень и тотальная нехватка времени не дают. Строю дом, свободного времени очень мало, а так-то да, надо тоже дисков накупить и притырить как можно больше всего нужного/интересного. Развитие событий особого оптимизма в плане доступности информации не внушает.
woozlix
18.09.2023 18:17+8найти что-то на YouTube труднее, чем иголку в стоге сена, потому что поиск там очень плохо реализован
Я аж прослезился, я думал, мне одному кажется, что поиск в ютубе делали криворукие дебилы. Как можно выдавать по запросу 5 видео, а дальше выдавать рандомные рекомендации? Как?????
vvbob
18.09.2023 18:17+2Это не глупость, это специально делается что-бы вы как можно больше видосиков посмотрели, дольше прозависали на ресурсе, и соответственно больше рекламы просмотрели. От этого напрямую зависит прибыль Гугла.
densss2
18.09.2023 18:17Как можно выдавать по запросу 5 видео, а дальше выдавать рандомные рекомендации?
Выдавать рандомные рекомендации с каналов, которые я добавил в игнор-лист - как Вам такое?
Algrinn
18.09.2023 18:17Ну если ты моряк, работаешь на флоте и интернет у тебя очень дорогой, то можно тогда купить себе несколько жёстких дисков и накачать себе контента. А если у тебя нет проблем с интернетом, то нафиг надо. А если ты ютубер, то лучше не лениться и свой контент заливать в несколько мест. А если вам отслеживают все действия, то это уже не ваша проблема, а проблема людей, которые борются с отслеживанием всех действий у вас в стране.
s1967
18.09.2023 18:17Если подходить к вопросу прагматично, то есть две базовые вещи. Отслеживание - да вообще пофигу. Ценность архива - возможно и имеет смысл но ведь само видео есть мега избыточный рерайт информации которая прекрасно гуглится за 10 минут. (Плюс в 99% случаев есть дублирование контента на самом ютубе)
Старые клипы ДДТ в hd качестве - сомнительно ведь музыка это звук а не видео (даже молчу о том что на 99% оборудования никто не заметит разницы между flac и mp3 128, это мы еще не казались позолоченных 6,25 разъемов)
PrinceKorwin
18.09.2023 18:17Некоторые вещи лучше один раз увидеть,, чем 10 раз прочитать.
ZekaVasch
18.09.2023 18:17Ага по итогу то что занимало пол страницы текста, средний блогер-говорун превращает в 90 минут видео с говорящей головой и размахиванием руками. Из эти 90 минут около 15 минут это реклама курсов и мантры "ставьте лайки, подписывайтесь на канал, нажимайте на колокольчик чтобы не пропустить свежие выпуски на бусте и патреоне для ранних пташек"
Worky
А можно такое же, но без еластиксерча? чтото по проще, экономнее.
Forvad
Создайте ту же структуру в виде папок, и лазте по ней командором :))