下载视频时 Pytube keyerror 'streamData'

Aar*_*oni 9 python python-3.x pytube

我正在编写一个代码,通过编写下面的代码来查看可用的视频流

from pytube import Playlist
from pytube import YouTube as YT
import threading as th
import time

plist=input('Enter the playlist: ')

videos=list(Playlist(plist))
i=videos[0]
video=YT(i)
strm=video.streams.filter(res="720p")
print(strm)
Run Code Online (Sandbox Code Playgroud)

从上面的代码我得到这样的错误

Traceback (most recent call last):
  File "D:\Practicals\Python\ML\youtube\temp.py", line 11, in <module>
    strm=video.streams.filter(res="720p")
         ^^^^^^^^^^^^^
  File "D:\Python311\Lib\site-packages\pytube\__main__.py", line 296, in streams
    return StreamQuery(self.fmt_streams)
                       ^^^^^^^^^^^^^^^^
  File "D:\Python311\Lib\site-packages\pytube\__main__.py", line 176, in fmt_streams
    stream_manifest = extract.apply_descrambler(self.streaming_data)
                                                ^^^^^^^^^^^^^^^^^^^
  File "D:\Python311\Lib\site-packages\pytube\__main__.py", line 161, in streaming_data
    return self.vid_info['streamingData']
           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
KeyError: 'streamingData'
Run Code Online (Sandbox Code Playgroud)

小智 11

我遇到了同样的问题,并通过向 YT(i) 添加use_oauthallowed_oauth_cache属性来修复它。

from pytube import Playlist
from pytube import YouTube as YT
import threading as th
import time

plist=input('Enter the playlist: ')

videos=list(Playlist(plist))
i=videos[0]
video=YT(i, use_oauth=True, allow_oauth_cache=True)
strm=video.streams.filter(res="720p")
print(strm)
Run Code Online (Sandbox Code Playgroud)

这将要求您通过浏览器连接到 YouTube 一次,但随后您将可以下载视频。


小智 7

使用 pytube 12.1.2 时遇到同样的错误。

video=YT(i, use_oauth=True, allow_oauth_cache=True)
Run Code Online (Sandbox Code Playgroud)

不适合我。

升级 pytube(到 15.0.0)后,错误消失了。