使用 PyTube 获取 KeyError: 'url'

mru*_*s24 4 python url python-3.x web pytube

下载视频时有时会出现错误。例如,我可以尝试下载视频并且它会下载,下次我运行该视频不会下载的脚本并且会抛出错误。

def search_youtube(song,randomString,playlist_name):
 results = YoutubeSearch(song, max_results=1).to_dict()
 for v in results:
    url = 'https://www.youtube.com' + v['link']
    print(url)

    _filename = song
    format_input = 'mp4'
    format_output = 'mp3'

    print("Downloading...." + ' ' + song)
    time.sleep(5)
    YouTube(url).streams.first().download(filename=randomString,output_path=playlist_name)
Run Code Online (Sandbox Code Playgroud)

Sau*_*hak 11

我刚刚解决了这个问题。按着这些次序。

  1. 转到站点包中的 pytube 目录。如果您不确定使用完整位置的位置:pip show pytube3。您将看到站点包的位置。
  2. 在从上面位置打开的site-packages/pytube文件夹中,您将看到一个名为extract.py的文件。在 IDE 或文本编辑器中打开该文件。
  3. 您将看到一个名为apply_descrambler的函数。在该函数内部,可能在第 301 行,您会看到类似 parse_qs(formats[i]["cipher"]) for i, data in enumerate(formats)
  4. 更换密码formats[i]["cipher"]signatureCipher。这样那条线就变成了, parse_qs(formats[i]["signatureCipher"]) for i, data in enumerate(formats)
  5. pytube3 现在应该可以正常工作了。

  • 刚刚为我工作(将错误变成干净的执行)——非常感谢。 (2认同)