Пишем решение для скачивания видео с YouTube одной кнопкой
В прошлом моём посте выяснилось что не у всех котанов работает расширение Savefrom.net:
Да, мне не удобно качать видосы через Кобальт или подобные проги
Надо копировать ссылку видео, открывать программу или приложение, вставлять ссылку и только потом нажимать кнопку скачать. Это долго, а я уважаю своё время!
Поэтому я решила написать своё решение для скачивания видосиков с Youtube одной кнопкой. Будем использовать "мегапрогу" yt-dlp.
Для неайтишников надо наверно объяснить в чём будет сложность. Вот есть браузер, он работает в изолированной защищенной среде и из него напрямую нельзя запустить программу. А нам как то надо будет передавать ссылку на скачивание в yt-dlp. Без костылей никак.
Кстати уже готовое решение на её основе было описано на Реддит семь месяцев назад.
Стороннее решение с Reddit
Оно актуально только для Firefox и требует Python для работы. В нём в реестр Windows добавляется манифест, добавляющий расширение в список доверенных и позволяющий запускать питоновский скрипт. Этот скрипт позволяет запускать любой код в командной строке!!!
В общем делайте на свой страх и риск.
Инструкция:
1. Устанавливаем расширение:
2. Устанавливаем Python, если его нет:
3. Открываем настройки расширения Open With и выполняем инструкцию по завершению установки:
Для удобства создайте директорию D:\Program Files\yt-dlp (можно в любую другую). В неё скачайте скрипт open_with_windows.py.
Создайте здесь же файл install.bat с кодом:
Запустите его с правами администратора (без них скрипт не сможет добавить запись в реестр). Проверьте установки в настройках расширения.
4. Поскольку Open With - это расширение разработанное для проверки сайтов, то предполагалось что Вы добавите пути для всех браузеров.
В настройках расширения Open With нажмите "Добавить браузер".
Назовите его "360p", а команду введите так:
где "G:\downloads" - Ваша директория для скачанных видео.
Данная команда запустит yt-dlp, который скачает аудио и видео лучшего качества высотой 360p. И объединит их в один файл при наличии у вас программы FFmpeg.
Почитать про параметры yt-dlp можно здесь:
По аналогии с "360p" добавьте свои форматы для скачивания.
5. Скопируйте в D:\Program Files\yt-dlp yt-dlp.exe, бинарник который будет скачивать видео с YouTube
6. Проверяем работу. Вынесите значок Open With на панель инструментов и находясь на youtube.com можно вызывать команды из выпадающего меню. При нажатии должно появится окно с логом скачивания видео.
Повторюсь что это расширение позволяет запускать любой код в командной строке! Есть ненулевая вероятность что злоумышленники смогут воспользоваться эти расширением.
По идее можно доработать код open_with_windows.py, в котором вызывается команды, чтобы в нём запускался исключительно yt-dlp.exe. Но...
В общем мне это решение не нравиться, т.к. только FF и оно перманентно даёт +100 очков к моей паранойи. На фиг его. Я написала свой "костыль".
Моё решение:
1. Скачиваем и устанавливаем NodeJS
2. Создаём директорию D:\Program Files\yt-dlp. Можно и другую, но тогда изменяйте путь к папке в дальнейших шагах.
3. Скачиваем yt-dlp.exe в D:\Program Files\yt-dlp
4. Опционально но строгорекомендуемо скачать и установить FFmpeg. Это программа будет объединять видео и аудио файлы в один контейнер. Без него скачанные видео и аудио будут в отдельных файлах.
5. В D:\Program Files\yt-dlp создаём файл yt-dlp.js с кодом
Замените в коде директории для скачанных видео на свою.
Как можно догадаться мы будем скачивать видео запуская команды вида:
6. Создайте и запустите файл yt-dlp.reg для слияние с реестром
Замените "D:\Program Files\nodejs\node.exe" на свой путь до node.exe
Это создаст новый "класс" yt-dlp в реестре Вашей ОС.
Проверьте. Откройте ссылку в браузере:
Должно запуститься окно с логом работы yt-dlp
7. Устанавливаем в браузере UserScript для кнопочек на скачивание
8. Проверяем.
UserScript проверен на работу в ViolentMonkey FF и TamperMonkey Chrome.
yt-dlp.js и UserScript можно дорабатывать с учётом Ваших потребностей.