How to add progress bar?

后端 未结 5 1880
逝去的感伤
逝去的感伤 2020-12-21 02:22

Is there a way to add progress bar in pytube? I don\'t know how to use the following method:

pytube.Stream().on_progress(chunk, file_handler, bytes_remaining         


        
相关标签:
5条回答
  • 2020-12-21 02:58

    The callback function takes three arguments, not four: stream, chunk and bytes_remaining.

    0 讨论(0)
  • 2020-12-21 03:08

    Somewhat shorter option:

    yt = YouTube(video_link, on_progress_callback=progress_function)
    
    video = yt.streams.first() # or whatever 
    
    # Prints something like "15.555% done..." 
    def progress_function(stream, chunk, file_handle, bytes_remaining):
        print(round((1-bytes_remaining/video.filesize)*100, 3), '% done...')
    

    You can, of course, limit the progress output, for instance, to values like 10, 20, 30%... - just surround the print statement with the required if-clause.

    0 讨论(0)
  • 2020-12-21 03:13
    from pytube import Playlist
    from pytube import YouTube
    
    previousprogress = 0
    def on_progress(stream, chunk, bytes_remaining):
        global previousprogress
        total_size = stream.filesize
        bytes_downloaded = total_size - bytes_remaining 
    
        liveprogress = (int)(bytes_downloaded / total_size * 100)
        if liveprogress > previousprogress:
            previousprogress = liveprogress
            print(liveprogress)
    
    
    yt = YouTube('https://www.youtube.com/watch?v=4zqKJBxRyuo&ab_channel=SleepEasyRelax-KeithSmith')
    yt.register_on_progress_callback(on_progress)
    yt.streams.filter(only_audio=True).first().download()
    
    0 讨论(0)
  • 2020-12-21 03:14

    Call your progress function inside the Youtube class

    yt = YouTube(video_link, on_progress_callback=progress_func)

    This is your progress function

    def progress_function(self,stream, chunk,file_handle, bytes_remaining):
    
        size = video.filesize
        p = 0
        while p <= 100:
            progress = p
            print str(p)+'%'
            p = percent(bytes_remaining, size)
    

    This computes the percentage converting the file size and the bytes remaining

    def percent(self, tem, total):
            perc = (float(tem) / float(total)) * float(100)
            return perc
    
    0 讨论(0)
  • 2020-12-21 03:15

    I know this is already answered, but i came across this and for me the progress was counting down from 100 to 0. Since I wanted to fill a progress bar with the percentage value, I couldn't use this.

    So i came up with this solution:

    def progress_func(self, stream, chunk, file_handle,bytes_remaining):
      size = self.video.filesize
      progress = (float(abs(bytes_remaining-size)/size))*float(100)
      self.loadbar.setValue(progress)
    

    The loadbar is my Progress Bar from PyQt5. Hope this helps someone.

    0 讨论(0)
提交回复
热议问题