Время от времени каждый пользователь интернета сталкивается с необходимостью скачать видео, встроенное в веб-страницу. Хорошим помощником в этом является утилита 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/
Может кому пригодится.