我已尝试使用以下代码在 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'])
我发现了一个非常酷的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')
Boom,现在你可以轻松地使用Python轻松抓取此类视频;现在,我们喝酒!
感谢@Chiramisu 的评论,您可以使用以下一句来下载最高质量的视频:
YouTube('video_url').streams.first().download('save_path')
对于 Windows,请使用双反斜杠指定路径,例如:
YouTube('video_url').streams.first().download('C:\\Users\\username\\save_path')
如果 pytube 似乎不适合您,请尝试使用 youtube-dl:
pip install --upgrade youtube-dl
现在下载视频:
from __future__ import unicode_literals
import youtube_dl
ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc'])
有关 python 中 ytdl 的更多信息这里。
在 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')
你应该把它放在里面
ydl_opts
:
ydl_opts = {
'outtmpl': os.path.join(download_path, '%(title)s-%(id)s.%(ext)s'),
}
就您而言,
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'])
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 这样的参数给您指定的选项位置、ID、标题,或者是否安静地查看日志,还有更多。几乎所有内容都可以从这个 URL 获得:https://github.com/ytdl-org/youtube-dl/blob/master/README.md#format-selection
-> 卸载 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)
youtube_dl
有一个巨大的选项列表:https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L128-L278
但我没有看到任何控制输出目录的东西。 这样您就可以稍后移动该文件。 为此,请参阅:如何在 Python 中移动文件。
它将保存文件您的 .py 应用程序所在的位置。例如,如果您的 .py 程序位于桌面文件夹中,并且您从桌面运行应用程序,则输出将保存在您的桌面上。您唯一需要的是将 .py 文件保存在桌面中,然后打开命令行并在使用 python YOURAPP.py 运行您的 .py 文件后使用 cd 命令进入桌面 但如果你想下载它然后将其保存在另一个地方,你需要像现在一样下载它(在你的临时位置),然后通过 python 中的文件库移动它。
'''
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()
#!/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()
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
,用于定义自定义目录。我们可以进一步自定义它来声明filename等
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()
pip install youtube-dl
对我不起作用,但这对我有用:
pip install git+https://github.com/ytdl-org/youtube-dl.git@master#egg=youtube_dl
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)
如果此代码适合您,请将答案标记为正确。