Время от времени каждый пользователь интернета сталкивается с необходимостью скачать видео, встроенное в веб-страницу. Хорошим помощником в этом является утилита youtube-dl, которая (несмотря на название) поддерживает большое количество видеохостингов и даже некоторые аудио-сервисы (полный список можно увидеть выполнив команду "youtube-dl --extractor-descriptions").
Несмотря на обширный функционал у youtube-dl есть большой минус: для работы с ней пользователь должен иметь навык работы в консоли, так как youtube-dl имеет интерфейс командной строки. Для решения этой проблемы различные энтузиасты создают свои интерфейсы-надстройки и далее будет предложен ещё один.
Толчком к написанию собственного интерфейса послужила неудовлетворённость ни одним из существующих GUI: с одной стороны интерфейс должен был быть максимально прост, с другой - как минимум хотелось видеть сообщения от youtube-dl.
В итоге было решено написать небольшой скрипт на bash с использованием Zenity, который последовательно запросит у пользователя ссылку на видео и директорию для скачивания, а потом откроет окно терминала с запущенным youtube-dl. В итоге получилось следующее:
#!/bin/bash # Шаг, на котором находится процесс выполнения STEP="$1" # Разбираем варианты case ${STEP} in # Второй шаг step2) # Переходим в директорию cd "${DIR}" # Запускаем скачивание # Указываем что по возможности разрешение видео не должно превышать HD youtube-dl -f '[height<=720]' "${LINK}" # Смотрим код возврата if [ "$?" -ne "0" ]; then zenity --error --text="Something wrong..." --title="Youtube Downloader" else zenity --info --text="Downloaded successfully!" --title="Youtube Downloader" fi ;; # Первый шаг *) # Запрашиваем у пользователя ссылку export LINK=`zenity --entry --text="Please enter youtube link:" --title="Youtube Downloader"` # Если ссылка пустая if [ -z ${LINK} ]; then # Завершаем работу exit; fi # Запрашиваем путь для сохранения export DIR=`zenity --file-selection --directory --text="Select directory for downloading..."` # Если директория не выбрана if [ -z ${DIR} ]; then # Завершаем работу exit; fi # Запускаем этот же скрипт в терминале, передав номер шага x-terminal-emulator -T "Youtube Downloader" -e "$0 step2" ;; esac
Этот код надо сохранить под любым удобным именем (например "youtube-dl-gui.sh") и сделать файл исполняемым. После чего можно приступать к использованию. Для удобства запуска можно создать ярлык на рабочем столе или в панели быстрого запуска.
В данном примере в качестве эмулятора терминала указан "x-terminal-emulator", который является "альтернативой", указывающей на реальный эмулятор терминала (актуально для Debian/Ubuntu и многих других современных дистрибутивов). Если ваш дистрибутив не использует механизм альтернатив то надо будет явно указать желаемый эмулятор терминала.
Так же в приведённом коде указано ограничение на максимальное разрешение скачиваемого видеофайла в 720p. При желании можно указывать и другие параметры скачивания. Подробнее о параметрах можно прочитать в документации youtube-dl.
На этом всё. Приятной работы!
Anonymous 2018-03-30 21:29:37 (#)
ПКМ по ссылке и появляется пункт "Play in MPV" в контекстном меню.
https://addons.mozilla.org/en-US/firefox/addon/ff2mpv/
Может кому пригодится.