toMedia
参考手册

Python 选项速查

yt-dlp Python API YoutubeDL 选项字典速查

Python API 通过传入 ydl_opts 字典来配置行为。以下是最常用的选项。

完整选项列表请参考 yt-dlp 源码 YoutubeDL.pyYoutubeDL.__init__ 的文档字符串。

基础用法

import yt_dlp

ydl_opts = {
    # ... 选项字典
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(["URL"])

格式与质量

Python Key类型说明CLI 对应
formatstr格式选择字符串-f
format_sortlist[str]格式排序规则-S
merge_output_formatstr合并输出格式--merge-output-format

输出路径

Python Key类型说明CLI 对应
outtmplstr输出文件名模板-o
pathsdict下载路径-P
overwritesbool是否覆盖文件--force-overwrites
restrictfilenamesbool限制为 ASCII 文件名--restrict-filenames
windowsfilenamesboolWindows 兼容文件名--windows-filenames

下载行为

Python Key类型说明CLI 对应
skip_downloadbool不下载,只提取信息--skip-download
continuedlbool断点续传-c
ratelimitint限速(字节/秒)-r
retriesint重试次数-R
fragment_retriesint分段重试次数--fragment-retries
concurrent_fragment_downloadsint并发分段数-N
socket_timeoutint超时秒数--socket-timeout
noplaylistbool禁止播放列表--no-playlist
playliststartint播放列表起始--playlist-start
playlistendint播放列表结束--playlist-end
playlist_itemsstr播放列表选择-I
download_archivestr归档文件路径--download-archive

认证

Python Key类型说明CLI 对应
cookiefilestrCookies 文件路径--cookies
cookiesfrombrowsertuple浏览器 Cookies--cookies-from-browser
usernamestr用户名-u
passwordstr密码-p

网络

Python Key类型说明CLI 对应
proxystr代理地址--proxy
source_addressstr绑定 IP--source-address
http_headersdict自定义 HTTP 头--add-header
geo_bypassbool地理限制绕过--geo-bypass

字幕

Python Key类型说明CLI 对应
writesubtitlesbool下载字幕--write-sub
writeautomaticsubbool下载自动字幕--write-auto-sub
subtitleslangslist[str]字幕语言列表--sub-lang
subtitlesformatstr字幕格式--sub-format

缩略图

Python Key类型说明CLI 对应
writethumbnailbool下载缩略图--write-thumbnail

输出控制

Python Key类型说明CLI 对应
quietbool静默模式-q
verbosebool详细输出-v
no_warningsbool隐藏警告--no-warnings
ignoreerrorsbool忽略错误-i

后处理器

Python Key类型说明
postprocessorslist[dict]后处理器列表
postprocessor_argsdict后处理器额外参数
keepvideobool保留原始文件

回调函数

Python Key类型说明
progress_hookslist[callable]进度回调函数列表
postprocessor_hookslist[callable]后处理回调函数

进度回调示例

def my_hook(d):
    if d['status'] == 'downloading':
        print(f"\r{d.get('_percent_str', '?')} at {d.get('_speed_str', '?')}", end='')
    elif d['status'] == 'finished':
        print(f"\n完成: {d['filename']}")
    elif d['status'] == 'error':
        print(f"\n错误: {d.get('filename', 'unknown')}")

ydl_opts = {
    'progress_hooks': [my_hook],
}

信息提取

# 提取信息不下载
with yt_dlp.YoutubeDL({'skip_download': True}) as ydl:
    info = ydl.extract_info("URL", download=False)

# 扁平化提取(播放列表只获取目录)
with yt_dlp.YoutubeDL({'extract_flat': True}) as ydl:
    info = ydl.extract_info("PLAYLIST_URL", download=False)

# 使用 sanitize_info 获取可序列化的信息
info = yt_dlp.YoutubeDL.sanitize_info(info)

On this page