运行我的Pytube脚本时出现此错误:

     signature = cipher.get_signature(js, stream['s'])
     KeyError: 's'

我的代码是这样的:
    url = 'https://www.youtube.com/watch?v='
    train_List = []
    i = 0
    while i < len(my_list):
        if len(my_list[i]) > 6:
            urls = url + my_list[i]
            train_List.append(urls)
            yt=YouTube(train_List[i])
            t=yt.streams.filter(only_audio=True).all()
            t[0].download('/pathtofolder')
            i+=1

我也尝试过:
    t=yt.streams.filter(file_extension='mp4').all()

我根据此处的建议更改了cipher.py和helper.py文件:https://github.com/nficano/pytube/issues/353#issuecomment-455116197

但这并没有解决问题。进行更改后,我得到了上面指出的错误。

接下来,按照其他一些建议运行“pip install pytube --upgrade”。下载一些音频文件后仍会收到KeyError。

根据github问题,我还在mixins.py中实现了这一点:
    if ('signature=' in url) or ('&sig=' in url) or ('&lsig=' in url):

但现在上传3次后就挂起了。

有人对此有解决办法吗?

最佳答案

我通过将mixins.py中的第49行更改为此问题(至少对我来说):

signature = cipher.get_signature(js, stream['url'])

代替
signature = cipher.get_signature(js, stream['s'])

然后将55-63行更改为
logger.debug(
    'finished descrambling signature for itag=%s\n%s',
    stream['itag'], pprint.pformat(
        {
            'url': stream['url'],
            'signature': signature,
        }, indent=2,
    ),
)

关于urllib2 - Pytube出现错误:签名= cipher.get_signature(js,stream ['s'])KeyError:'s',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56382295/

10-14 01:03