file_downloaded = full_file_size - оставшийся TypeError: неподдерживаемые типы операндов для -: 'int' и 'NoneType

Я пытался запустить этот код, но он продолжает выдавать указанную ошибку. Проблема определенно в функции Progress(), где я пытаюсь отобразить индикатор выполнения на экране/кнопке. Я пробовал несколько вещей, но ничего не работает. Пожалуйста помоги! Я использую pytube3, python 3.7

from pytube import YouTube
from tkinter import * 
import threading

full_file_size = 0

def progress(stream=None, chunk=None, file_handle=None, remaining=None):
    file_downloaded = full_file_size - remaining
    per = (file_downloaded/full_file_size)*100
    # btn_text.set(f"{per} % Downloading")
    print(f"{per}%") 

def download_stream():
    global full_file_size
    input_url = entry_var.get()
    ob = YouTube(input_url, on_progress_callback=progress)
    strm = ob.streams.first()
    full_file_size = strm.filesize
    # print(type(file_size))
    print(full_file_size/(1024*1024), "MB")
    
    save_path = "C:\\Users\\hp\\Desktop\\visual programs\\youtube_download"
    print("Your video is downloading")
    
    strm.download(save_path)
    print("Dowload Complete")
    entry_widget.delete(0,END)
    btn_text.set("Download")
    
def continue_thrad():
    thread = threading.Thread(target=download_stream)
    thread.start()
    print('Thread is working')

window = Tk()
window.geometry("500x600")
window.title("Youtube Downloader.")

img = PhotoImage(file='logo.png')
l1 = Label(window, image=img)
l1.pack()

entry_var = StringVar()
btn_text = StringVar()
btn_text.set("Download")

entry_widget = Entry(window, textvar=entry_var, font=("Verdana, 20"), relief=SUNKEN)
entry_widget.pack(fill=X, padx=20, pady= 10)

b1=Button(window, textvariable=btn_text, font=("Verdana, 20"), command=continue_thrad)
b1.pack()

window.mainloop()

person Prawah    schedule 21.06.2020    source источник
comment
Ошибка говорит, что «full_file_size» имеет целочисленную форму, а оставшаяся переменная равна None. Просто взгляните на свой код и определите, почему None передается туда.   -  person Deepak    schedule 21.06.2020
comment
Я пробовал несколько способов. Можете ли вы объяснить, что вы пытались сделать? Например, проверили ли вы, что full_file_size и remaining соответствуют вашим предположениям?   -  person Bryan Oakley    schedule 21.06.2020
comment
@Deepak None может пройти, потому что в параметрах, которые я передал, оставшееся = None. Но это должно быть так, поскольку это стандартный формат для этой функции. Я попытался удалить это, чтобы он автоматически принимал значение из callback_function, но все равно выдает ошибку   -  person Prawah    schedule 26.06.2020
comment
Привет, ребята, я действительно понял, в чем проблема. В pytube3 параметр file_handle не требуется, и значения не должны быть равны None. После этого он успешно работал   -  person Prawah    schedule 26.06.2020


Ответы (1)


def progress(chunk, file_handle, remaining):

вышеуказанный параметр передается в функцию прогресса, чтобы решить проблему. [Примечание: не передавайте None в параметре]

person anupam kayal    schedule 28.12.2020