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

2024-06-26 18:10:08 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我正试图用^{}制作一个简单的脚本来下载youtube视频。目前我对全局变量video有一个问题,我用它来存储pafy.new('url')返回的内容。以下是我使用的两个函数:

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条目小部件。到目前为止还不错,但是当我调用downloadVideo()时,我得到了一个错误:

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


Tags: path函数urlnewget视频tkinterdownload
1条回答
网友
1楼 · 发布于 2024-06-26 18:10:08

在这一行中发现问题:

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

这个:

^{pr2}$

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

相关问题 更多 >