【问题标题】:Python Pytube progress for playlist download用于播放列表下载的 Python Pytube 进度
【发布时间】:2018-09-19 11:35:00
【问题描述】:

我正在使用 pytube 在 python 中编写程序,我想在下载播放列表时指示进度。下载单个视频时,我可以这样做:

YouTube(url, on_progress_callback=progressFunction)

但这在下载播放列表时不起作用:

Playlist(url, on_progress_callback=progressFunction)

我收到以下错误:

TypeError: __init__() got an unexpected keyword argument 'on_progress_callback'

下载播放列表时有什么方法可以获取进度吗?

【问题讨论】:

  • pytube 不再维护,考虑改用 pytube3

标签: python pytube


【解决方案1】:

根据source codePlaylist 类不需要on_progress_callback 关键字参数,而只需要url 一个。

【讨论】:

  • 这不能回答我的问题
  • 我的意思是,pytube 不提供此功能,但您可以通过分叉项目、修改代码和(为什么不)制作 PR 来轻松添加它。
【解决方案2】:

您可以从播放列表中获取所有网址,然后一一调用下载。 这对我最有效。

def getAllLinks(playList):
'''
: This function take a link of playlist and return the link of each videos
:param playList:
:return: A list of all Url links
'''
allLinks = []
youtubeLink = 'https://www.youtube.com'
pl = Playlist(playList)
for linkprefix in pl.parse_links():
    allLinks.append(youtubeLink + linkprefix)
return allLinks

从这里你会得到所有的网址,然后

def downloadPlaylist(playlistLink):
linkArray = getAllLinks(playlistLink)
for link in linkArray:
    downloadVideo(link)

【讨论】:

    【解决方案3】:

    您可以使用register_on_progress_callback函数在初始化后注册下载进度回调函数。

    这方面的一个例子是:

    p = Playlist('https://www.youtube.com/playlist?list=PLetg744TF10BrdPjaEXf4EsJ1wz6fyf95')
    for v in p.videos:
        v.register_on_progress_callback(progressFunction)
        # proceed to downloading...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多