Pytube это библиотека для скачивания видео с Youtube. Как сказано в документации, у неё нет сторонних зависимостей и она построена на стандартной библиотеке.
Установка
Установить пакет можно с помощью менеджера пакетов pip:
pip install pytube
Эта команда найдёт пакет в репозитории, скачает его и установит на локальную машину. Вывод команды будет примерно таким:
Collecting pytube
Downloading pytube-6.2.2-py2-none-any.whl
Installing collected packages: pytube
Successfully installed pytube-6.2.2
Работаем с pytube
После завершения установки откройте консоль python и импортируйте пакет pytube:
import pytube
Класс YouTube представляет экземпляр YouTube-сессии, поэтому его нужно инициализировать так:
yt = pytube.YouTube('https://www.youtube.com/watch?v=xtZOnyYu16U')
После этого в переменной yt будет храниться вся информация о переданном видео, к примеру название файла:
fn = yt.filename
Как известно, чтобы получить значение переменной в консоли python, нужно ввести её наименование и нажить кнопку Ввод на клавиатуре:
fn
Вы должны увидеть следующее:
u'Stoto - Late Night (Original Mix)'
Всё довольно очевидно — вы видите имя файла от переданной ссылки на видео при создании экземпляра класса в его методе YouTube.__init__.
Также нам доступен атрибут video_id, который определяется при создании экземпляра класса. Можно вывести его так:
video_id = yt.video_id
print(video_id)
'xtZOnyYu16U'
Доступные для скачивания видео можно получить методом get_videos:
videos = yt.get_videos()
Выведем в цикле каждое из них:
for v in videos:
print(v)
Для моего видео вывод будет таким:
<Video: MPEG-4 Visual (.3gp) - 144p - Simple>
<Video: MPEG-4 Visual (.3gp) - 240p - Simple>
<Video: H.264 (.mp4) - 360p - Baseline>
<Video: H.264 (.mp4) - 720p - High>
<Video: VP8 (.webm) - 360p - N/A>
Тип каждого объекта получим так:
for v in videos:
print(type(v))
Вывод должен быть таким:
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
Класс pytube.models.Video используется для создания отдельных экземпляров видео с дальнейшим скачиванием.
Первый экземпляр можно получить по его индексу:
first_video = videos[0]
print(first_video)
Video имеет много атрибутов, таких как filename, url, extension, video_codec, audio_codec, audio_bitrate, resolution и т.д.
Расширение видео получим так:
first_video.extension
'3gp'
Качество видео:
quality = first_video.resolution
print(quality)
'144p'
Битрейт:
audio_bitrate = first_video.audio_bitrate
video_bitrate = first_video.video_bitrate
print(audio_bitrate)
print(video_bitrate)
Скачать видео также просто:
first_video.download('/Users/oltjano/Desktop')
Выбранное видео будет загружено в папку /Users/oltjano/Desktop
А если вам нужно перезаписать загруженное ранее видео, присвойте переменной force_overwrite значение True:
first_video.download(path='/Users/oltjano/Desktop', force_overwrite=True)
Скачиваем видео определённого формата
Начнём с начала. Перезапустите консоль python и введите:
import pytube
video_link = 'https://www.youtube.com/watch?v=8ZpVwAeLzm4'
Создадим Youtube сессию и запросим доступные форматы:
yt = pytube.YouTube(video_link)
videos = yt.videos
Используя метод get можно отфильтровать видео по формату и качеству:
video = yt.get('mp4', '720p')
Если такое видео будет доступно, в переменной появятся ссылки на него, иначе — будет выведена ошибка.
Итак, у нас нет ошибки, значит, видео можно скачать. Зададим путь для загруженного файла и загрузим видео:
path = '/Users/Oltjano/Desktop'
video.download(path)
Готово!
Источник: «Pytube: How to Download Youtube Videos with this Python Tool»
Разработчик: java, kotlin, c#, javascript, dart, 1C, python, php.
Пишите: @ighar. Buy me a coffee, please :).
yt = pytube.YouTube(‘ссылка’)
fn = yt.filename
получаю ошибку
Exception has occurred: KeyError
‘assets’
А как использовать pytube со своего аккаунта ютуба?
А что делать, если нужно скачать не все видео, а только часть его?
Пробывал скачивать все и нарезать, но в связке андроид+Python это выглядит нереально