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#useComment-455116197
しかし、それは問題を修正していません。変更を行った後、私は上記のエラーを得ました。
次に、他の推奨事項ごとに「PIP Install Pytube - Upgrade」を実行しました。それでもいくつかのオーディオファイルをダウンロードした後にkeyErrorを取得します。
GitHubの問題に従って、これをmixins.pyに実装しました。
if ('signature=' in url) or ('&sig=' in url) or ('&lsig=' in url):
_
しかし今では3回のアップロード後にぶら下がっています。
誰もがこれへの修正を持っていますか?
同じ問題を抱えています。私がもう一度試してみると、ほとんどの時間があります...
url = 'https://www.youtube.com/watch?v=gQrkvZeE3Uc'
yt = YouTube(url)
yt.streams.filter(progressive=True, subtype='mp4').order_by('resolution').desc().last().download()
_
助けてくれてありがとう
それを解決する方法の1つ:pip install git+https://github.com/nficano/pytube.git
_
それ以外は、これをチェックしてください スレッド
Cipher.pyファイルをlib/python3.6/site-packages/pytubeに修正する必要があります。
Cipher.pyでは、38行目から始動してパターンを変更します。
pattern = [
r'(["\'])signature\1\s*,\s*(?P<sig>[a-zA-Z0-9$]+)\(',
r'\.sig\|\|(?P<sig>[a-zA-Z0-9$]+)\(',
r'yt\.akamaized\.net/\)\s*\|\|\s*.*?\s*c\s*&&\s*d\.set\([^,]+\s*,\s*(?:encodeURIComponent\s*\()?(?P<sig>[a-zA-Z0-9$]+)\(',
r'\bc\s*&&\s*d\.set\([^,]+\s*,\s*(?:encodeURIComponent\s*\()?\s*(?P<sig>[a-zA-Z0-9$]+)\(',
r'\bc\s*&&\s*d\.set\([^,]+\s*,\s*\([^)]*\)\s*\(\s*(?P<sig>[a-zA-Z0-9$]+)\(',
]
_