Скачать видео на 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)

Если этот код подходит вам, пометьте ответ как правильный.

Другие вопросы по тегам