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(),

Другие вопросы по тегам