Как добавить индикатор выполнения в мой код PyTube - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть работающий скрипт на pytube, но я немного борюсь с тем, куда нужно добавить дополнительные фрагменты кода для создания индикатора выполнения.

#! usr/bin/python3

import sys
from pytube import YouTube

if len(sys.argv) < 2:
    print('Argument 1 must be the YouTube URL. Argument 2 must be a location to save it.')

yt = YouTube(sys.argv[1])

print()
print("Knocking on YouTube's Door....")
print(f'Downloading: {yt.title}')
print()

yt = YouTube(sys.argv[1]).streams.first().download(sys.argv[2])

print('Download Complete!')

1 Ответ

0 голосов
/ 18 апреля 2019

Вы должны вызвать register_on_progress_callback(func) на своем объекте YouTube, где func - это функция, которая принимает stream, chunk, file_handle и bytes_remaining в качестве параметров. Для вашего кода это будет:

def on_progress(stream, chunk, file_handle, bytes_remaining):
    total_size = stream.filesize
    bytes_downloaded = total_size - bytes_remaining 
    percentage_of_completion = bytes_downloaded / total_size * 100

yt.register_on_progress_callback(on_progress)

Затем вы должны использовать переменную percentage_of_completion, чтобы нарисовать индикатор выполнения, но это немного выходит за рамки этого вопроса. Помните, что on_progress функция будет вызываться каждый раз при загрузке фрагмента. Надеюсь, теперь вы сможете делать то, что хотели.

...