python - 如何修复 pytube 错误:“AttributeError: 'NoneType' 对象没有属性 'download'”
问题描述
我正在制作一个应用程序,我可以将链接放入一个输入框中,然后将输出目录放入另一个输入框中。我正在使用 tkinter 来塑造应用程序,并且正在使用pytube
它来下载视频。当我试图通过按下视频来下载视频时,我正在做这些事情:
- 从输入框中获取字符串
- 然后使用
vid = YouTube(link)
如果那不起作用然后获取视频print("Connection Error or Video doesn't exist")
- 然后使用获取下载的最大分辨率
vid_res = vid.streams.get_highest_resolution()
- 最后我会
vid.streams.filter(res=vid_res).first().download(dir)
下载视频,如果这不起作用,请执行以下操作:
except IndexError as e:
print(e)
然后当我单击按钮时,它会加载一段时间,然后给我错误:
AttributeError:“NoneType”对象没有属性“下载”
整个错误消息说:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1885, in __call__
return self.func(*args)
File "c:\Users\User\Desktop\Coding\Python\YTDownloader\YTDownloader.py", line 40, in <lambda>
activeforeground="#ffffff", text="Dowload Video", font=('Courier', 20), command=lambda: Download.dowload_vid(temp_link, temp_dir))
File "c:\Users\User\Desktop\Coding\Python\YTDownloader\Download.py", line 15, in dowload_vid
vid.streams.filter(res=vid_res).first().download(dir)
AttributeError: 'NoneType' object has no attribute 'download'
这是代码:
from pytube import YouTube
def dowload_vid(l, d):
link = l.get()
dir = d.get()
try:
vid = YouTube(link)
except:
print("Connection Error or Video doesn't exist")
vid_res = vid.streams.get_highest_resolution()
try:
vid.streams.filter(res=vid_res).first().download(dir)
except IndexError as e:
print(e)
那么我做错了什么?