Скачать видео на YouTube с помощью Python
Привет, я попробовал следующий код, чтобы загрузить видео в тубе, и он работает. Но я хочу сохранить видео в определенном месте. Теперь это сохранение видео в C:/Users/Download... Если я хочу сохранить видео на рабочем столе. Какие изменения мне нужны в коде.
from __future__ import unicode_literals
import youtube_dl
import urllib
import shutil
ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=n06H7OcPd-g'])
13 ответов
Я обнаружил действительно классный модуль Python, который позволяет легко загружать видео с YouTube. Чтобы установить его:
pip install pytube
Теперь вы можете скачать ваше видео, как это -
from pytube import YouTube
yt = YouTube("https://www.youtube.com/watch?v=n06H7OcPd-g")
yt = yt.get('mp4', '720p')
yt.download('/path/to/download/directory')
Бум, теперь вы можете легко очищать такие видео с помощью Python; Теперь мы пьем!
Обновление 1:
Благодаря комментарию @Chiramisu, вы можете использовать следующую однострочную версию для загрузки видео высочайшего качества:
YouTube('video_url').streams.first().download('save_path')
Загрузив видео с YouTube в Python 3.x для ознакомления, вы можете проверить https://python-pytube.readthedocs.io/en/latest/user/quickstart.html
from pytube import YouTube
import os
def downloadYouTube(videourl, path):
yt = YouTube(videourl)
yt = yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first()
if not os.path.exists(path):
os.makedirs(path)
yt.download(path)
downloadYouTube('https://www.youtube.com/watch?v=zNyYDHCg06c', './videos/FindingNemo1')
Вам нужно только os.chdir(path)
изменить каталог, где вы хотите, чтобы загрузка была.
from __future__ import unicode_literals
import youtube_dl
import os
ydl_opts = {}
os.chdir('C:/Users/Desktop')
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc'])
Path = "The Path That You Want"
Location = '%s \%(extractor)s-%(id)s-%(title)s.%(ext)s'.replace("%s ", Path)
ytdl_format_options = {
'outtmpl': Location
}
with youtube_dl.YoutubeDL(ytdl_format_options) as ydl:
ydl.download(['https://www.youtube.com/watch?v=n06H7OcPd-g'])
Я лично не очень хорошо знаю библиотеку, но вот мне известно, что youtube_dl имеет ytdl_format_options, он дает вам возможность добавить некоторые, я не знаю, что он вызвал, но, скажем, параметры, подобные приведенным выше outtmp1, дают вам возможность указать местоположение, идентификатор, заголовок или тишина, чтобы просмотреть журнал или нет, и многое другое. почти все, что вы можете получить по этому URL:https://github.com/ytdl-org/youtube-dl/blob/master/README.md
-> Удалить pytube (если есть)
pip uninstall pytube
-> Установить:
pip install pytube3
-> Измените extract.py в среде:
lib/pytube/extract.py
-> Найти и отредактировать строку:
parse_qs(formats[i]["cipher"]) for i, data in enumerate(formats)
-> измените его на:
parse_qs(formats[i]["signatureCipher"]) for i, data in enumerate(formats)
-> Используйте pytube:
from pytube import YouTube
import os
def downloadYoutube(vid_url, path):
yt = YouTube(vid_url)
yt = yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first()
if not os.path.exists(path):
os.makedirs(path)
yt.download(path)
url = input('Input url:\n')
path = input('Path to store file:\n')
downloadYoutube(url, path)
Я внес некоторые изменения в ответ @orlov_dumitru, и все заработало.
#!/usr/bin/env python
import os
import sys
from pytube import YouTube
def downloadYoutube(vid_url, path):
yt = YouTube(vid_url)
yt = yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first()
if not os.path.exists(path):
os.makedirs(path)
yt.download(path)
# video url
url = sys.argv[1]
# path to where you want to save the video
path = sys.argv[2]
downloadYoutube(url, path)
exit()
Я создал библиотеку, которая упрощает работу.
Установить:
$ pip install mhyt
# or
$ sudo pip install mhyt
И используйте это так:
from mhyt import yt_download
yt_download("url","file.format",ismucic=True)
youtube_dl
имеет огромный список вариантов: https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py
Но я не вижу ничего, что управляет выходным каталогом. Таким образом, вы можете переместить файл позже. Для этого смотрите: Как переместить файл в Python.
Это сохранит файл, в котором находится ваше.py приложение. например, если ваша программа.py находится в папке вашего рабочего стола, и вы запускаете приложение с рабочего стола, результаты будут сохранены на вашем рабочем столе. единственное, что вам нужно, это сохранить ваш.py файл на рабочем столе, а затем открыть командную строку и перейти на рабочий стол с помощью команды cd после того, как он запустит ваш.py файл с помощью python YOURAPP.py, но если вы хотите скачать его, а затем сохранить его в другом месте вам нужно скачать его, как вы сейчас делаете (на вашем временном месте), а затем переместить его через библиотеки файлов в python.
Похоже, что pytube немного изменился с тех пор, как изначально был опубликован главный ответ на вопрос. Вот обновленный пример работы с PyTube v11.0.2 (9 января 2022 г.):
'''
HOW TO: Download YouTube Videos Programmatically with Python & pytube
$ pip install pytube
$ python3 download.py
'''
from pytube import YouTube
def on_progress(stream, chunk, bytes_remaining):
print("Downloading...")
def on_complete(stream, file_path):
print("Download Complete")
yt = YouTube(
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
on_progress_callback=on_progress,
on_complete_callback=on_complete,
use_oauth=False,
allow_oauth_cache=True
)
yt.streams.filter(file_extension='mp4', res="720p").first().download()
from __future__ import unicode_literals
import youtube_dl
ydl_opts = {
'outtmpl': 'yourPathToDirectory/%(title)s.%(ext)s',
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=XpYGgtrMTYs'])
ydl_opts
это то, с чем нам нужно играть. Мы можем объявить внутри него несколько атрибутов / параметров для настройки. В этом примере я добавил один атрибутouttmpl
который используется для определения настраиваемого каталога. Мы можем дополнительно настроить это, чтобы объявить имя файла и т. Д.
pip3 install pytube
yt_url = "https://youtu.be/k8oMuLWiUzo"
from pytube import YouTube
yt = YouTube(yt_url)
yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first().download()
Я думаю, вы немного запутались, попробуйте этот код, конец в конец
from __future__ import unicode_literals
import youtube_dl
import urllib
import shutil
ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=n06H7OcPd-g'])
#Moving your source file to destination folder
source_file = 'C:\Users\Sharmili Nag\Aahatein - Agnee (splitsvilla 4 theme song) Best audio quality-n06H7OcPd-g.mp4'
destination_folder = 'C:\Users\Sharmili Nag\Desktop\Aahatein - Agnee (splitsvilla 4 theme song) Best audio quality-n06H7OcPd-g.mp4'
shutil.move(source_file, destination_folder)
Если этот код подходит вам, пометьте ответ как правильный.