Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Why am I getting an AttributeError for download?

I’m getting an attribute error for this line(Line 15).
videoStream.download(download_Folder)
when i try to run the code i get "AttributeError: ‘function’ object has no attribute ‘download’".

Here’s the full code if it helps.

import tkinter as tk
from tkinter import Button, Entry, Label, StringVar, messagebox, filedialog
from pytube import YouTube

def download_url():
    Youtube_link = video_link.get()
    download_Folder = download_folder1.get()
    getVideo = YouTube(Youtube_link)
    AorV = messagebox.askyesno('Video Type','Do you want Audio only?')
    if AorV == 'yes' :
        videoStream = getVideo.streams.get_audio_only
        videoStream.download(download_Folder)
    else:
        videoStream = getVideo.streams.first
        videoStream.download(download_Folder)
    messagebox.showinfo('Success','Downloaded to \n'+download_Folder)


def browse_folder():
    folder_name = filedialog.askdirectory(initialdir='D:\aweso\Downloads')
    download_folder1.set(folder_name)


#GUI
root = tk.Tk()
root.geometry('300x200')
root.resizable(False,False)
root.title('Youtube Downloader')

url_label = Label(root, text='Youtube URL')
url_label.pack()

video_link = StringVar()
url_link = Entry(root, textvariable= video_link)
url_link.pack()

download_folder1 = StringVar()
download_folder1.set('Select Folder')

downloadvid = Button(root, text='Download',command=download_url)
downloadvid.pack()

selected_folder = Label(root,textvariable=download_folder1)
selected_folder.pack()

browse = Button(root,text='Browse',command=browse_folder)
browse.pack()



root.mainloop()

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

The StreamQuery objects exposed by getVideo.streams have get_audio_only() and first() as methods, not attributes – you have to call them like the functions they are.

https://pytube.io/en/latest/api.html#pytube.query.StreamQuery.first

https://pytube.io/en/latest/api.html#pytube.query.StreamQuery.get_audio_only

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading