8

pytube に進行状況バーを追加する方法はありますか? 次の方法の使い方がわかりません。

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

私のコード:

from pytube import YouTube
# from pytube import Stream
from general import append_to_file


def downloader(video_link, down_dir=None):
    try:
        tube = YouTube(video_link)
        title = tube.title
        print("Now downloading,  " + str(title))
        video = tube.streams.filter(progressive=True, file_extension='mp4').first()
        print('FileSize : ' + str(round(video.filesize/(1024*1024))) + 'MB')
        # print(tube.streams.filter(progressive=True, file_extension='mp4').first())
        # Stream(video).on_progress()
        if down_dir is not None:
            video.download(down_dir)
        else:
            video.download()
        print("Download complete, " + str(title))
        caption = tube.captions.get_by_language_code('en')
        if caption is not None:
            subtitle = caption.generate_srt_captions()
            open(title + '.srt', 'w').write(subtitle)
    except Exception as e:
        print("ErrorDownloadVideo  |  " + str(video_link))
        append_to_file('debug', format(e))
    # FILESIZE print(tube.streams.filter(progressive=True, file_extension='mp4').first().filesize/(1024*1024))
4

8 に答える 8

4

これはすでに回答されていることは知っていますが、これに遭遇し、進行状況が 100 から 0 までカウントダウンされていました。進行状況バーにパーセンテージ値を入力したかったので、これを使用できませんでした。

だから私はこの解決策を思いついた:

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)

ロードバーは、PyQt5 のプログレス バーです。これが誰かに役立つことを願っています。

于 2018-09-30T08:45:47.943 に答える