Yet another youtube-dl GUI

()

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

Пример работы youtube-dl GUI

В данном примере в качестве эмулятора терминала указан "x-terminal-emulator", который является "альтернативой", указывающей на реальный эмулятор терминала (актуально для Debian/Ubuntu и многих других современных дистрибутивов). Если ваш дистрибутив не использует механизм альтернатив то надо будет явно указать желаемый эмулятор терминала.

Так же в приведённом коде указано ограничение на максимальное разрешение скачиваемого видеофайла в 720p. При желании можно указывать и другие параметры скачивания. Подробнее о параметрах можно прочитать в документации youtube-dl.

На этом всё. Приятной работы!

Ключевые слова: youtube-dl, gui, zenity.

Подписаться на обновления: RSS-лента Telegram канал Twitter

Комментарии:

Anonymous 2018-03-30 21:29:37 (#)

Спасибо за скрипт, пригодится. Видео сохраняю редко, ч/з терминал как правило, а вот онлайн только с помощью расширения ff2mpv.
ПКМ по ссылке и появляется пункт "Play in MPV" в контекстном меню.
https://addons.mozilla.org/en-US/firefox/addon/ff2mpv/
Может кому пригодится.

MooSE 2018-04-01 18:34:29 (#)

https://addons.mozilla.org/en-US/firefox/addon/ff2mpv/
Посмотрел как оно ставится - как-то уж больно сложно. А чем плох просмотр прямо в браузере?:)
Новый комментарий



© 2006-2018 Вадим Калинников aka MooSE