You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pytube通过input()获取播放列表URL报KeyError:'list'错误

问题根因

报错核心原因是input()函数用法错误:
input()括号内传入的字符串是控制台展示的提示文本,不会作为默认输入值。你把示例播放列表链接写在input()参数位置,运行时直接按回车,实际赋值给url变量的是空字符串。pytube解析空值时找不到URL查询参数中的list字段,直接抛出KeyError: 'list'。

修复后可直接运行的代码
import re
from pytube.contrib.playlist import Playlist
from pytube import YouTube
from pytube.cli import on_progress

# 预设示例播放列表链接
DEFAULT_PLAYLIST_URL = "https://youtube.com/playlist?list=PLVxmNUcoG69uwwG59UVUyJ9SoLRHE78kp"

# 明确提示用户操作,回车自动使用示例链接
input_content = input(f"请输入YouTube播放列表链接,直接回车将使用示例测试链接:").strip()
url = input_content if input_content else DEFAULT_PLAYLIST_URL

# 基础合法性校验
if "list=" not in url:
    print("输入错误:链接不是有效的YouTube播放列表地址,需包含list参数")
    exit(1)

try:
    playlist = Playlist(url)
    total = len(playlist.video_urls)
    print(f"获取播放列表成功,共{total}个视频")
except Exception as e:
    print(f"获取播放列表失败:{str(e)},请检查网络连接、链接是否为公开播放列表")
    exit(1)

# 清洗文件名,替换系统不支持的特殊字符
def clean_filename(name):
    return re.sub(r'[\\/*?:"<>|]', "_", name)

for idx, video_url in enumerate(playlist.video_urls, 1):
    try:
        yt = YouTube(video_url, on_progress_callback=on_progress)
        # 获取音视频合并的最高分辨率流
        stream = yt.streams.get_highest_resolution()
        safe_title = clean_filename(yt.title)
        print(f"\n[{idx}/{total}] 正在下载:{safe_title}")
        stream.download(filename=f"{safe_title}.mp4")
        print(f"[{idx}/{total}] 下载完成:{safe_title}")
    except Exception as e:
        print(f"\n[{idx}/{total}] 视频下载失败,已跳过:{str(e)}")
        continue
其他常见问题排查方向
  • 网络问题:pytube不会自动读取系统代理配置,运行脚本前需要确保Python进程可以正常访问YouTube,否则会出现连接超时、页面内容拉取失败的问题。
  • 版本问题:YouTube会不定期调整前端页面结构,如遇解析类报错,先执行pip install --upgrade pytube升级到最新官方版本。
  • 权限问题:仅自己可见、会员专属、地区限制的播放列表/视频,pytube无权限拉取内容,会触发解析错误。
  • 分辨率问题:get_highest_resolution()仅能返回音视频合并的渐进式流,最高分辨率通常为720p;如果需要1080p及以上清晰度,需要单独下载分离的视频流、音频流,再通过ffmpeg合并。

内容的提问来源于stack exchange,提问作者MrLecker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 23:24:14