Python pafy global 无法跨函数调用边界工作

Python pafy global not working across a function-call boundary

好的,我正在尝试制作一个简单的脚本来使用 pafy 下载 YouTube 视频。目前我在使用全局变量 video 存储 pafy.new('url') returns 时遇到问题。这是我使用的两个函数:

video = {};

def downloadVideo():

    options = {};
    options['initialdir'] = 'C:\';
    options['mustexist'] = False;
    options['title'] = 'Download folder';

    dir_path = tkinter.filedialog.askdirectory(**options);
    global video;
    video.getbest(preftype="mp4").download(quiet=True, filepath=dir_path);

def get():
    url = url_entry.get();

    if url == '':
        return

    global video;
    video = pafy.new(url);

    # Some code to display video info

首先,我使用 get() 函数从 url_entry 获取视频,这是一个 tkinter Entry 小部件。到目前为止一切顺利,但是当我调用 downloadVideo() 时出现此错误:

AttributeError: 'NoneType' object has no attribute 'download'

发现这一行的问题:

video.getbest(preftype="mp4").download(quiet=True, filepath=dir_path);

这个:

video.getbest(preftype="mp4")

实际上返回了一个 NoneType 对象,因为它不包含任何 mp4 流。所以,这不完全是个问题,这只是我在调用 download() 之前应该检查的东西。现在我只获取所有流 video.streams 并下载我需要的或者让它下载最好的 video.getbest().download().