【问题标题】:Youtube Downloading Progress bar issueYoutube 下载进度条问题
【发布时间】:2020-09-20 23:46:40
【问题描述】:

我正在尝试在下载 Youtube 视频时添加下载进度, 但是,我尝试的每种方法都会出现一些奇怪的问题。 有人可以帮忙吗?

问题是 类型错误:progress_func() 缺少 2 个必需的位置参数:'file_handle' 和 'bytes_remaining'

我尝试为每个都提供 None 值,但接着它继续说 bytes_remaining 和 size 不是同一类型。

谢谢

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)

yurl = input("VURL here: ")
yt = YouTube(yurl, on_progress_callback=progress_func)

【问题讨论】:

  • progress_func 似乎是一个类的方法。很可能是YouTube。你能提供更多你的代码吗?请阅读this help page 并相应地更新您的问题。
  • 这里肯定是从 pytube 导入 YouTube 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) yurl = input("VURL here:") yt = YouTube(yurl, on_progress_callback=progress_func) yt.streams.filter(progressive=True, file_extension='mp4' ).first().download() print("\n 已下载")

标签: python download youtube progress-bar pytube


【解决方案1】:

on_progress_callback 函数只需要 3 个参数:stream、chunk 和 bytes_remaining。此外,看起来该函数是类中的一个方法:在这种情况下,您必须使用 lambda 函数手动传递“self”参数,因此您的代码应如下所示:

yt = YouTube(yurl, on_progress_callback=lambda stream, chunk, bytes_remaining: self.progress_func(self, stream, chunk, bytes_remaining))

不久前我遇到了同样的问题,这就是我解决它的方法。希望这也是您的解决方案!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多