Как скачать видео с ютуба python
Перейти к содержимому

Как скачать видео с ютуба python

  • автор:

Загрузка видео с YouTube с помощью Python используя pytube

Эта статья научит вас загружать видео с YouTube с помощью кода Python. Вы будете создавать скрипт на Python, используя библиотеку pytube.

Как вы, возможно, уже знаете, Python может похвастаться множеством модулей и библиотек, что дает ему преимущество в универсальности. В данном случае мы создадим Python-скрипт, использующий популярный пакет pytube.

Но подождите, есть несколько вещей, которые вы должны сделать в первую очередь. Вот основы:

Вы должны знать язык программирования Python.
На вашем компьютере должен быть установлен Python 3+
Вы должны установить библиотеку Python Pytube.
Вы можете использовать терминал для запуска скрипта
Вам понадобится редактор кода Python, например Pycharm, Vscode и т.п.

Давайте вкратце расскажем о Pytube, прежде чем погрузиться в работу, хорошо? Pytube — это замечательный модуль Python, который дает вам доступ ко всем видео в youtube. Но сначала его нужно установить. К счастью, установка через pip очень проста.

Просто откройте терминал и введите эту команду:
$ pip install pytube

Библиотека Pytube даст вам первоклассные навыки загрузки видео. Вы создадите модуль объекта YouTube с URL-адресом видео в качестве параметра. Отсюда вы можете выбрать расширение и разрешение видео, которое вам нужно.

еперь перейдем к главному аспекту — напишем код для загрузки видео с YouTube.

from pytube import YouTube

def Download(link):
youtubeObject = YouTube(link)
youtubeObject = youtubeObject.streams.get_highest_resolution()
try:
youtubeObject.download()
except:
print(«Произошла ошибка»)
print(«Загрузка завершена успешно»)

link = input(«Введите URL видео YouTube: «)
Download(link)

Прежде всего, мы должны импортировать библиотеку Python Pytube с помощью этого кода: from pytube import YouTube. Затем мы определим ссылку на скачивание для функции.

Команда youtubeObject = youtubeObject.streams.get_highest_resolution() автоматически загрузит самое высокое доступное разрешение. А если загрузка не удастся, код Try and Except выведет сообщение об ошибке. В противном случае вы получите подтверждение, что загрузка прошла успешно.

Вот! Видео загружено, друг. Вы можете просмотреть видео в той же папке Python, где был сохранен файл. При желании вы можете переместить его в более удобное место хранения.
Эта библиотека также оснащена множеством дополнительных функций.
Для получения дополнительной информации о библиотеке pytube, пожалуйста, посетите ее официальную документацию, которая тщательно проработана.

Использование CLI также удивительно просто. Чтобы загрузить видео с наивысшим прогрессивным качеством, вы можете использовать следующую команду:

Вы также можете сделать то же самое для плейлиста:

Для просмотра доступных потоков:

$ pytube https://www.youtube.com/watch?v=Xj9deFmZh4k —list

Чтобы загрузить определенный поток, используйте itag

Работа с YouTube

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

pip install pytube

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

Для обращения к определенному видео на youtube необходимо создать объекта YouTube, в конструктор которого передается ссылка на видео:

from pytube import YouTube # ссылка на загружаемое видео link = "https://www.youtube.com/watch?v=J0Aq44Pze-w" yt = YouTube(link)

С помощью атрибута streams можно получить все стримы, связанные с этим видео (в том числе отдельно его аудиодорожки), и их параметры:

from pytube import YouTube # ссылка на загружаемое видео link = "https://www.youtube.com/watch?v=J0Aq44Pze-w" yt = YouTube(link) print(yt.streams)

Для загрузки видео нам надо выбрать конкретный стрим из полученного списка и вызвать у него метод download() . Например, выберем и загрузим первый стрим:

from pytube import YouTube link = "https://www.youtube.com/watch?v=J0Aq44Pze-w" yt = YouTube(link) yt.streams.first().download() print("Видео успешно загружено")

При этом мы можем загрузить разные варианты видео. Для выбора видео в наилучшем расширении библиотека предоставляет специальный метод get_highest_resolution() :

YouTube("https://www.youtube.com/watch?v=J0Aq44Pze-w").streams.get_highest_resolution().download()

Загрузка субтитров

Для получения информации о субтитрах класс YouTube предоставляет атрибут captions , который предоставляет словарь объектов Caption, фактически список доступных субтитров:

from pytube import YouTube link = "https://www.youtube.com/watch?v=bDo18m-uOi8" yt = YouTube(link) print(yt.captions)

В данном случае мы получим информацию о субтитрах в следующем виде:

, 'a.en': , 'pt-BR': , 'ru': , 'es-MX': >

В полученном словаре ключ представляет языковую культуру, например, «pt-BR» (бразильский португальский) или «en» (общий английский). Для автосгенерированных субтитров код языка предваряется символом «a», например, «a.en». Значение ключа дублируется в атрибуте «code» объекта Caption.

Для загрузки субтитров применяется у Caption применяется метод download() , например, загрузим субтитры для английского языка:

from pytube import YouTube yt = YouTube("https://www.youtube.com/watch?v=bDo18m-uOi8") yt.captions["en"].download(title="Python", srt=False) print("Субтитры загружены")

В метод download() передаются два параметра. Параметр title представляет название файла, в который будут сохраняться субтитры. Второй параметр — srt указывает, в каком формате загружать субтитры: если равно True , то загружаются в формате srt, если False — в формате xml.

Взаимодействие с плейлистами

Для взаимодействия с плейлистами библиотека предоставляет класс Playlist :

from pytube import Playlist

Для создания объекта Playlist в конструктор класса надо передать ссылку на плейлист:

playlist = Playlist("https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6")

Все видео из плейлиста мы можем получить с помощью атрибута videos , которое представляет список Stream. Например, загрузим все видео из плейлиста:

from pytube import Playlist playlist = Playlist("https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6") print(f"Загрузка плейлиста: ") for video in playlist.videos: video.streams.first().download() print(f"Видео загружено")

С помощью атрибута video_urls можно получить все ссылки на видео в плейлисте:

from pytube import Playlist playlist = Playlist("https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6") for url in playlist.video_urls: print(url)

Как скачать видео ютуб на питон?

Как скачать видео ютубе на питон?
Я пытался скачать видео через pytube, youtube_dl — либо ошибка или было что видео с звуком, но без картинки или просто видео файл без нечего (разные коды) os linux ubuntu 20.04 . Буду благодарен за ответ.

Отслеживать
74.1k 114 114 золотых знаков 38 38 серебряных знаков 55 55 бронзовых знаков
задан 24 дек 2021 в 20:00
Archerymystery Archerymystery
51 2 2 серебряных знака 8 8 бронзовых знаков
youtube_dl раньше вроде работал, а сейчас такая-же фигня.
24 дек 2021 в 20:06
24 дек 2021 в 22:53

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

from pytube import YouTube yt = YouTube('https://www.youtube.com/watch?v=o5wC0QqqN1c') #ссылка на видео. # yt.stream показывает какое видео ты можешь скачать # (mp4(720) + audio или только mp4(1080) без звука). # Сейчас стоит фильтр по mp4. print(yt.streams.filter(file_extension='mp4')) stream = yt.streams.get_by_itag(22) #выбираем по тегу, в каком формате будем скачивать. stream.download() #загружаем видео. 

Отслеживать
51.6k 202 202 золотых знака 65 65 серебряных знаков 249 249 бронзовых знаков
ответ дан 25 дек 2021 в 15:47
355 2 2 серебряных знака 11 11 бронзовых знаков

Советую перейти форк youtube-dl — yt-dlp . Синтаксис полностью идентичен youtube-dl . К тому же, разработчики youtube-dl бросили проект и сказали всем перейти на yt-dlp . Так же у него немного больше функций, больше поддерживаемых сайтов для загрузки и больше скорость.

import yt_dlp def download(link, name='%(title)s'): ydl_opts = < 'format': 'bestvideo+bestaudio/best', #берем самое лучшее качество видео и фото 'outtmpl': '<>.%(ext)s'.format(name), #наше выбраное имя, если его не было, то стандартное - название видео на самом сайте > with yt_dlp.YoutubeDL(ydl_opts) as ydl: info_dict = ydl.extract_info(link, download=True) downloaded_file_path = ydl.prepare_filename(info_dict) print(f"Видео успешно загружено!") return downloaded_file_path print(download('https://www.youtube.com/watch?v=uHgt8giw1LY', 'Привет!')) 

Вы можете ознакомиться с документацией здесь

P.S. Возможно, я немного перегнул палку. Без возвращения пути и функции можно облегчить код до:

import yt_dlp ydl_opts = URLS = ['https://www.youtube.com/watch?v=uHgt8giw1LY'] with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(URLS) 

4 Easy Ways to Download a Video in Python

To download a YouTube video using PyTube, install the library with pip install pytube , import the YouTube object from pytube, instantiate the YouTube object with your video URL, get the highest resolution stream of the video with youtube.streams.get_highest_resolution() , and download the video to your desired location using video.download(‘/path/to/download’) . Ensure to replace ‘/path/to/download’ with your preferred download directory.

First, you have to install the library. You can do this by running pip install pytube in your command line.

Once you’ve done that, you can use the following Python script to download a video:

from pytube import YouTube def download_video_from_youtube(link, path): yt = YouTube(link) video = yt.streams.get_highest_resolution() # download the video video.download(path) # example usage: download_video_from_youtube('https://www.youtube.com/watch?v=dQw4w9WgXcQ', '/path/to/download/directory')

This script takes a YouTube video link and a download path as input. It then uses pytube to get the video from the link, and downloads the highest resolution stream of that video to the provided download path.

�� Legality Alert! It needs to be said. The legality of downloading videos from YouTube (or other video services) depends on the jurisdiction and the specific terms of service. In many cases, it may be against the terms of service to download and redistribute videos without the explicit permission of the content owner. This script is provided for educational purposes only, and you should not use it to download or distribute videos without permission.

Method 2: URLLib Request

The urllib.request.urlretrieve(video_url, filename) function can download resources from URLs, and that includes videos. Pass the URL of the resource you want to download as the first argument and the local filename you want to save the downloaded resource to as the second argument. The function will then download the resource at the given URL and save it to the specified filename.

However, it might not always work as expected with video content from platforms like YouTube due to the way such platforms stream and protect their video content.

import urllib.request url_link = 'http://example.com/video.mp4' # replace with your actual video url filename = 'video_name.mp4' urllib.request.urlretrieve(url_link, filename)

Note that urlretrieve won’t work with all URLs, especially if the file is protected or requires some kind of session or cookie to access or if the server checks the User-Agent and doesn’t like Python’s default User-Agent.

YouTube, for example, uses JavaScript and dynamic page elements to protect its videos from being downloaded, which urlretrieve can’t handle because it doesn’t execute JavaScript or handle dynamic page elements.

That’s why libraries like youtube_dl or pytube are typically used to download videos from YouTube – they can handle the complexity of YouTube’s video serving system.

Method 3: Youtube_DL Library

To download a YouTube video with youtube_dl in Python, install the library using pip install youtube_dl and import youtube_dl in your script using the YoutubeDL object’s download method, passing in a list containing your video’s URL. By default, the video will be saved in your current working directory.

Then you can use the following Python code:

import youtube_dl def download_video(url): ydl_opts = <> with youtube_dl.YoutubeDL(ydl_opts) as ydl: ydl.download([url]) # replace 'url' with your video URL download_video('url')

Here’s what this code does:

  1. ydl_opts = <> is a dictionary of configuration options for youtube_dl . In this case, it’s empty, which means we’re using the default options.
  2. youtube_dl.YoutubeDL(ydl_opts) creates a YoutubeDL object with the given options.
  3. ydl.download([url]) downloads the video at the provided URL.

The video will be downloaded to your current working directory. If you want to save it to a specific directory, you can add the ‘outtmpl’ key to your ydl_opts dictionary, like this: ‘outtmpl’: ‘/path/to/download/%(title)s-%(id)s.%(ext)s’ .

�� Again: Please respect YouTube’s terms of service and the rights of content creators when downloading videos.

youtube_dl is a widely used, reliable library for downloading videos from YouTube and other video platforms. However, because these platforms frequently change their backends, youtube_dl may occasionally stop working until it is updated by its maintainers.

Method 3: Requests Library

To download a video from a direct URL using the requests library in Python, first install requests with pip install requests . Then, in your script, import requests , call requests.get(url) to get the video content, and write it to a file using the write() function of a file object, opened in binary write mode ( ‘wb’ ). Replace ‘url’ with your video’s URL and ‘filename’ with your preferred file name.

Here’s an example:

import requests def download_video(url, filename): r = requests.get(url) with open(filename, 'wb') as f: f.write(r.content) # replace 'url' and 'filename' download_video('http://example.com/video.mp4', 'video.mp4')

This method doesn’t work for YouTube videos due to the platform’s protection mechanisms. Always respect copyright laws and terms of service.

Method 4: URLLib2

To download a video from a URL (e.g., on Coursera) using Python’s urllib2 library and handle Basic HTTP Authentication, use urlopen() to retrieve the video content, which is then written into a file. If the server requires authentication, the HTTPPasswordMgrWithDefaultRealm and HTTPBasicAuthHandler classes are used to create an opener that includes the username and password.

Here’s an example:

import urllib2 # video link and filename dwn_link = 'https://class.coursera.org/textanalytics-001/lecture/download.mp4?lecture_id=73' file_name = 'trial_video.mp4' # download and save the video rsp = urllib2.urlopen(dwn_link) with open(file_name,'wb') as f: f.write(rsp.read()) # if Basic HTTP Authentication is required password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() top_level_url = "http://class.coursera.org/" password_mgr.add_password(None, top_level_url, username, password) handler = urllib2.HTTPBasicAuthHandler(password_mgr) # create "opener" (OpenerDirector instance) opener = urllib2.build_opener(handler) # use the opener to fetch a URL opener.open(dwn_link)

Please note that as of Python 3, urllib2 has been split across several modules in urllib package, so the above example won’t work directly in Python 3. Also, respect copyright laws and terms of service when downloading videos.

While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.

To help students reach higher levels of Python success, he founded the programming education website Finxter.com that has taught exponential skills to millions of coders worldwide. He’s the author of the best-selling programming books Python One-Liners (NoStarch 2020), The Art of Clean Code (NoStarch 2022), and The Book of Dash (NoStarch 2022). Chris also coauthored the Coffee Break Python series of self-published books. He’s a computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.

His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.

Categories Python, Web Scraping

Be on the Right Side of Change ��

  • The world is changing exponentially. Disruptive technologies such as AI, crypto, and automation eliminate entire industries. ��
  • Do you feel uncertain and afraid of being replaced by machines, leaving you without money, purpose, or value? Fear not! There a way to not merely survive but thrive in this new world!
  • Finxter is here to help you stay ahead of the curve, so you can keep winning as paradigms shift.

Learning Resources ��‍��

⭐ Boost your skills. Join our free email academy with daily emails teaching exponential with 1000+ tutorials on AI, data science, Python, freelancing, and Blockchain development!

Join the Finxter Academy and unlock access to premium courses �� to certify your skills in exponential technologies and programming.

New Finxter Tutorials:

  • 5 Best Ways to Create a Pandas Series in Python
  • 5 Best Ways to Count Values in Python Pandas Series
  • 5 Best Ways to Copy a Pandas Series in Python
  • 5 Best Ways to Check if a Python Pandas Series Contains a Value
  • 5 Best Ways to Apply Conditions in Python Pandas Series
  • 5 Best Ways to Concatenate Pandas Series in Python
  • 5 Best Ways to Compare Python Pandas Series
  • 5 Best Ways to Check if a Pandas Series is Empty in Python
  • 5 Best Ways to Change Values in a Python Pandas Series
  • 5 Best Ways to Change Index in Python Pandas Series

Finxter Categories:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *