Python使用youtube_dl按关键词搜索如何返回多个结果
youtube_dl关键词搜索仅返回单条结果解决方法 原因
使用ytsearchN格式的搜索前缀调用extract_info时,返回的结果是搜索结果集合对象,你需要的5条结果并没有丢失,全部存储在返回字典的entries数组字段中。直接打印顶层的info字典只会展示集合的基础元数据和第一条结果的概览,所以会产生只返回了一条结果的错觉。
修复后代码示例
from youtube_dl import YoutubeDL ydl_option = { 'format': 'bestaudio', # 可选配置:仅拉取标题、ID等基础信息,不需要拉取每个视频的完整详情,可大幅提升搜索速度 'extract_flat': True } query = input() # 用户输入搜索关键词 with YoutubeDL(ydl_option) as ydl: # 前缀和关键词之间加英文冒号分隔,避免关键词带特殊字符时匹配异常 info = ydl.extract_info(f"ytsearch5:{query}", download=False) # 遍历获取全部5条搜索结果 all_results = info['entries'] for idx, result in enumerate(all_results, 1): if result: # 跳过拉取失败的空条目 print(f"第{idx}条结果:") print(result) print("-"*50)
补充注意事项
- 如果关闭
extract_flat配置,返回的每个entry都会包含视频的全量元数据(分辨率、时长、资源直链等),但搜索耗时会相应变长 - 原版
youtube_dl已经停止维护,部分老旧版本存在搜索结果条数不匹配、接口失效的问题,遇到这类问题可以切换到同接口的活跃维护分支yt-dlp,兼容性更高
内容的提问来源于stack exchange,提问作者TimG233
相关产品推荐
相关产品推荐

