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()
.
好的,我正在尝试制作一个简单的脚本来使用 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()
.