You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Python模块yt_dlp获取YouTube播放列表信息慢于命令行的优化咨询

使用Python模块yt_dlp获取YouTube播放列表信息慢于命令行的优化咨询

嗨,我来帮你解决这个问题~你遇到的Python代码比命令行慢的核心原因,是两者使用的参数逻辑不一样!

你在命令行里加了--flat-playlist--dump-single-json,这两个参数会让yt-dlp只抓取播放列表的基础框架信息,不会逐个拉取每个视频的详细数据(比如视频时长、分辨率、字幕信息这些),所以速度飞快;但你的Python代码里没有设置对应的选项,yt-dlp默认会去获取每个视频的完整详情,自然就慢很多啦。

只需要给Python代码里的ydl_opts加上对应参数,就能让速度和命令行保持一致,同时获取到和命令行输出结构相近的信息。修改后的代码如下:

import yt_dlp
url = 'https://www.youtube.com/playlist?list=PLyiJZcChPSpxLQHGf6K5CwGv7QIR55ea6'

def get_video_info(url):
    # 对应命令行的 --flat-playlist 和 --dump-single-json 核心参数
    ydl_opts = {
        "ignoreerrors": True,
        "extract_flat": "in_playlist",  # 只提取播放列表的扁平结构,不深入视频详情
        "quiet": True,  # 关闭冗余输出,进一步提升速度
        "skip_download": True  # 明确标记不下载,和download=False作用一致
    }
    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        info = ydl.extract_info(url, download=False)
    return info

info = get_video_info(url)
print(info.get('entries'))

这样修改后,yt-dlp只会获取播放列表里每个视频的基础标识信息(比如视频ID、标题、链接),不会加载额外的详细内容,速度就会和你用命令行时一样快啦,返回的信息结构也会和--dump-single-json的输出几乎一致。

备注:内容来源于stack exchange,提问作者user28976168

火山引擎 最新活动