使用Python将YouTube视频下载到某个目录

Sha*_*Nag 24 python python-2.7 python-3.x

我已尝试使用以下代码在YouTube上下载视频并且它正常运行,但我想将视频保存在特定位置.现在它正在保存视频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'])
Run Code Online (Sandbox Code Playgroud)

Dak*_*ani 43

我发现了一个非常酷的python模块,可以让你轻松地从youtube下载视频.要安装它:

pip install pytube
Run Code Online (Sandbox Code Playgroud)

现在,你可以像这样下载你的视频 -

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')
Run Code Online (Sandbox Code Playgroud)

Boom,现在您可以轻松地使用Python轻松抓取此类视频; 现在,我们喝!

更新1:

感谢@ Chiramisu的评论,您可以使用以下单行代码下载最高质量的视频:

YouTube('video_url').streams.first().download('save_path')
Run Code Online (Sandbox Code Playgroud)

  • 单线[更新的逻辑](https://github.com/nficano/pytube#getting-started):`YouTube('video_url')。streams.first()。download('save_path')`。这将下载最高质量的视频,但是1080p或更高版本将是单独的视频和音频文件,需要与FFmpeg或某些此类实用程序结合使用。 (5认同)
  • `AttributeError:'YouTube'对象没有属性'get' (4认同)
  • 我认为这是代码的旧版本. (3认同)
  • @ mLstudent33检查我的答案中的udpate 2 (2认同)

Aza*_*ndi 7

您可以在python 3.x中从youtube下载视频作为参考,您可以查看https://python-pytube.readthedocs.io/en/latest/user/quickstart.html#downloading-a-video

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')
Run Code Online (Sandbox Code Playgroud)


joh*_*han 6

你应该把它放在里面ydl_opts

ydl_opts = {
    'outtmpl': os.path.join(download_path, '%(title)s-%(id)s.%(ext)s'),
}
Run Code Online (Sandbox Code Playgroud)

在你的情况下,download_path应该是'C:/Users/Desktop'. 如果您更喜欢没有视频 ID 的文件名,请使用%(title)s.%(ext)s代替%(title)s-%(id)s.%(ext)s

或者,您可以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=n06H7OcPd-g'])
Run Code Online (Sandbox Code Playgroud)


Joh*_*nck 2

youtube_dl有一个巨大的选项列表:https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L128-L278

但我没有看到任何控制输出目录的内容。这样您就可以稍后移动该文件。为此,请参阅:如何在 Python 中移动文件