web-dev-qa-db-ja.com

PTYUBEのエラーの取得:Signature = Cipher.get_Signature(JS、Stream ['S'])keyError: 's'

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回のアップロード後にぶら下がっています。

誰もがこれへの修正を持っていますか?

4
topplethepat

同じ問題を抱えています。私がもう一度試してみると、ほとんどの時間があります...

url = 'https://www.youtube.com/watch?v=gQrkvZeE3Uc'
yt = YouTube(url)
yt.streams.filter(progressive=True, subtype='mp4').order_by('resolution').desc().last().download()
 _

助けてくれてありがとう

0
Alexander L.

それを解決する方法の1つ:pip install git+https://github.com/nficano/pytube.git _

それ以外は、これをチェックしてください スレッド

0
techkuz

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$]+)\(',
]
 _
0
mr. M