13 февраля 2017

Как скачать видео из YouTube с помощью Python

Есть множество он-лайн сервисов для загрузки видео с Ютуба, но все они насыщены рекламой или же вообще могут быть вредоносны.
Рассмотрим, как можно скачать видео напрямую из YouTube себе на компьютер без установки расширений в браузер.

Для работы нам понадобится Python и библиотека pytube.
Ссылка на библиотеку на GitHub: https://github.com/nficano/pytube

Установка библиотеки для Python

Для установки библиотеки pytube можно воспользоваться менеджером пакетов pip:

pip install pytube

После этого библиотеку можно использовать как из программ Python, так и из командной строки.

Использование из командной строки

Для загрузки видео можно в командной строке ввести команду:

pytube 

Команда имеет следующие аргументы:
--extention EXT, -e EXT — требуемый формат видео (Например mp4)
--resolution RES, -e RES — требуемое разрешение видео
--path PATH, -p PATH — путь для сохранения видео
--filename FILENAME, -f FILENAME — имя файла без расширения, с которым будет сохранено видео

Примеры команд:

pytube https://www.youtube.com/watch?v=90KZnwrVMgY
Будет скачано видео в текущую папку, формат webm и разрешением по умолчанию (360p)

pytube -e mp4 -r 720p  https://www.youtube.com/watch?v=90KZnwrVMgY
Будет скачано видео в текущую папку, формат mp4 и разрешением 720p

pytube -e mp4 -r 720p -f "Video_1" https://www.youtube.com/watch?v=90KZnwrVMgY
Будет скачано видео в текущую папку, формат mp4 и разрешением 720p и именем "Video_1"

Использование из программ на Python

Для импорта библиотеки можно воспользоваться следующей конструкцией языка:

from pytube import YouTube

Далее с помощью следующей команды получить "объект" с видео

yt = YouTube("https://www.youtube.com/watch?v=90KZnwrVMgY")

Получение доступных форматов

Следующим шагом может быть получение доступных форматов:

yt.get_videos()

или для вывода в консоль

print(yt.get_videos())

Работа с именем файла

Для просмотра автоматически генерируемого имени файла:

print(yt.filename)

Для задания имени будущему файлу:

yt.set_filename('Dancing Scene from Pulp Fiction')

Фильтрация доступных форматов

Для фильтрации доспупных форматов можно возспользоваться методом filter:

print(yt.filter('flv'))

И с его помощью получить максимальное разрешение для выбранного формата:

print(yt.filter('mp4')[-1])

Загрузка видео

Для загрузки видео необходимо выбрать видео для загрузки:

video = yt.get('mp4', '720p')

И скачать его с помощью команды download:

video.download('/download/')