Python pafy global не работает через границу вызова функции
Хорошо, я пытался сделать простой скрипт для загрузки видео с YouTube, используя pafy
, В настоящее время у меня есть проблема с глобальной переменной 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' нет атрибута 'download'
1 ответ
Нашел проблему в этой строке:
video.getbest(preftype="mp4").download(quiet=True, filepath=dir_path);
Это:
video.getbest(preftype="mp4")
на самом деле вернул NoneType
объект, так как он не содержит каких-либо mp4
поток. Так что это не совсем проблема, это просто то, что я должен проверить перед звонком download()
, Теперь я просто получаю все потоки video.streams
и загрузите то, что мне нужно, или просто загрузите лучшее video.getbest().download()
,