如何修复 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. 获取下载的最大分辨率
  5. 最后我做了 vid.streams.filter(res=vid_res).first().download(dir) 下载视频,如果这不起作用,请执行以下操作:
except IndexError as e:
            print(e)

然后当我点击按钮时,它会加载一段时间,给我一个错误

AttributeError: 'nonetype' 对象没有属性 'download'

整个错误信息说:

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)

那我做错了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...