【问题标题】:Getting KeyError: 'url' with PyTube使用 PyTube 获取 KeyError: 'url'
【发布时间】:2020-09-09 15:02:39
【问题描述】:

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

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)

【问题讨论】:

  • 这是整个脚本吗?你能添加完整的回溯吗?

标签: python python-3.x web url pytube


【解决方案1】:

我刚刚解决了这个问题。 请按照以下步骤操作。

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

【讨论】:

  • 刚刚为我工作(将错误转变为干净执行)——非常感谢。
【解决方案2】:

我决定跳过由于错误消息而无法下载的视频。

except KeyError as e:
       print ('I got a KeyError - reason "%s"' % str(e))
       print ('skipping the song - : ' + song)

【讨论】:

    【解决方案3】:

    我有类似你的代码,希望对你有帮助:

    import webbrowser
    import pytube
    from subprocess import call
    
    key = input('Input what you want to download: ')
    a_website = "https://www.youtube.com/results?search_query="+key
    webbrowser.open_new(a_website)
    
    open('url.txt', 'w')
    call(['notepad', 'url.txt'])
    
    start = input('Press enter when ready to download >>> ')
    with open('url.txt','r') as f:
        urls = f.readlines()
    number = len(urls)
    num = 0
    for url in urls:
        num += 1
        print('Downloading video',num,'of',number)
        yt = pytube.YouTube(url)
        stream = yt.streams.first()
        stream.download()
    
    open('url.txt', 'w')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      • 1970-01-01
      • 2022-12-28
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多