[Обучалово]Пишем решение для скачивания видео с YouTube одной кнопкой (часть 2)
Это чисто образовательный пост, целью которого будет изучение JavaScript и NodeJS.
Данный пост будет продолжением поста, где мы писали своё собственное решение для скачивания видео с YouTube при помощи yt-dlp одной кнопкой! Это важно!
Один коммент в обсуждении этого поста меня очень сильно затронул:
Прочитав этот комментарий, я неделями не смогла нормально спать. Я всё представляла как Sedi сейчас сидит перед монитором, записывая ролики с Яндекс озвучкой на свой телефон.
Вы посмотрите на его аватару. Как же он страдает из-за этого! :
Мы доработаем наш код из первой части: сделаем чтобы видео гарантировано скачивались, добавим возможность загружать плейлисты, а также добавим возможность скачивать видео с VOT(voice over translation) озвучкой Яндекса. Затрону тонкости работы yt-dlp про которые мне многие писали.
Для работы с VOT будем использовать библиотеку
Та самая либа, которая используется для VOT Яндекса в браузерах отличных от Яндекс Браузера.
Кстати Вы не задумывались что скачивание видео с YouTube не разрешено и нарушает правила платформы и законы об авторском праве? А вот Яндекс как-то скачивает видео для своей нейроозвучки. У меня смутные сомнения что Яндекс договорился со всеми авторами на платформе. Получается главная фишка Яндекс Браузера...
Ну или они ничего не скачивают, а с колонки по звуку переводят. Не будем плохо думать про Яндекс.
Чтобы не было правовых вопросов ко мне, давайте Вы пообещаете, что у Вас есть Яндекс Браузер и этот скрипт для скачивания VOT Вы будете использовать только для возможности объединения видео с VOT.
А также что Вы будете договариваться с авторами каналов за право скачать видео.
Мы уважаем авторское право!
Спонсорский блок
1. Ошибки при работе с yt-dlp
1.1. Многие при использовании yt-dlp не прописывают параметр кукисов со своим браузером. Из-за чего он не работает с NSFW видео.
Решается прописыванием параметра с именем браузера
Опытным путем установлено что кукисы нормально подцепляются только с Firefox.
Если для Вас Firefox неосновной браузер: установите Firefox, зайдите в свою учётку Гугла, откройте на Youtube любое NSFW видео, закройте навсегда Firefox.
Это наиболее простой вариант, если не хотите кукисы в виде текстового файла передавать - вариант для извращенцев.
1.2. Попытка скачивания часто завершается ошибкой "Read timed out"
Решается тем, что мы пытаемся скачать видео в бесконечном цикле пока видео не будет скачано.
Обычно видео скачивается с первой-второй попытки.
1.3. При скачивании плейлистов(при передачи параметра list в url'e) Вы также будете получать "Read timed out" с прекращением работы программы.
Решается "ручным" получением всех url видео в плейлисте и скачиванием каждого видео по-отдельности.
2. Скачиваем VOT Яндекса
Здесь по аналогии с yt-dlp мы пытаемся получить ссылку с сервисов Яндекса, пока они её не отдадут. Это может быть очень долгий процесс.
3. Объединение видео с аудио
Когда мы скачали видео и VOT, то объединяем их при помощи FFmpeg.
Он в отличии от vot.js и yt-dlp ни с какими сервисами не работает: с ним никаких проблем нет.
4. Как это все запустить?
4.1 Скачайте архив с моего "гитхаба", разархивируйте в директорию по Вашему выбору
4.2 Устанавлите NodeJS
4.3 Скачайте в папку "bin" бинарник yt-dlp.exe
4.4 Установите FFmpeg. Он нужен для объединения видео и аудио в один файл.
4.5. Создайте и запустите файл yt-dlp.reg для слияние с реестром
Предварительно заменив "D:\Program Files\nodejs\node.exe" и "D:\Program Files\yt-dlp\yt-dlp.js" на свои пути к бинарнику NodeJS и скрипту.
Это создаст новый "класс" yt-dlp в реестре Вашей ОС.
4.6 Установите Userscript из файла "user.js" в своём Яндекс Браузере
4.7 Установите модули нажав "install.bat"
4.8 В файле yt-dlp.js измените директорию для скачивания и другие параметры по желанию