首页 > 解决方案 > 如何修复 pytube 错误:“AttributeError: 'NoneType' 对象没有属性 'download'”

问题描述

我正在制作一个应用程序,我可以将链接放入一个输入框中,然后将输出目录放入另一个输入框中。我正在使用 tkinter 来塑造应用程序,并且正在使用pytube它来下载视频。当我试图通过按下视频来下载视频时,我正在做这些事情:

  1. 从输入框中获取字符串
  2. 然后使用vid = YouTube(link)如果那不起作用然后获取视频print("Connection Error or Video doesn't exist")
  3. 然后使用获取下载的最大分辨率vid_res = vid.streams.get_highest_resolution()
  4. 最后我会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)

那么我做错了什么?

标签: pythonpython-3.xtkinterpytube

解决方案


推荐阅读