如何将指定yt-dlp命令转换为Python脚本调用?
将yt-dlp命令转换为Python调用的正确配置
原yt-dlp命令
yt-dlp --continue --no-overwrites --extract-audio --audio-format mp3 -o "ST_%(upload_date)s_%(title).50s.%(ext)s" https://www.youtube.com/channel/UCYt3jqP4rRP2rr5Ye8fs0LQ/videos --playlist-reverse --restrict-filenames --add-metadata --postprocessor-args "-metadata albumartist=rAmAnuja-dayA" --download-archive ./ytdl-archive.txt
对应的Python调用配置修正版
以下是完全匹配原命令参数的ydl_opts字典配置,同时修正了你初步版本中的几个问题:
import os import copy # 基础配置,完全对齐原命令参数 ydl_opts_base = { # 优先选择最佳音频流 'format': 'bestaudio/best', # 音频提取与转码配置 'postprocessors': [{ 'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3', # 对应原命令的--audio-format mp3 }], # 播放列表相关 'playlistreverse': True, # 对应--playlist-reverse # 文件与下载行为 'restrictfilenames': True, # 对应--restrict-filenames 'nooverwrites': True, # 对应--no-overwrites 'continuedl': True, # 对应--continue 'outtmpl': { 'default': 'ST_%(upload_date)s_%(title).50s.%(ext)s' # 保留%(ext)s,避免写死后缀 }, # 元数据相关 'addmetadata': True, # 对应--add-metadata # FFmpeg后处理参数,对应原命令的--postprocessor-args 'postprocessor_args': [ '-metadata', 'albumartist=rAmAnuja-dayA' ], # 可选:开启 verbose 便于调试 'verbose': True } # 自定义路径与归档文件 dest_dir = './downloads' # 替换为你的目标目录 ydl_opts = copy.deepcopy(ydl_opts_base) ydl_opts['paths'] = {'home': dest_dir} ydl_opts['download_archive'] = os.path.join(dest_dir, 'ytdl-archive.txt') # 执行下载 url = 'https://www.youtube.com/channel/UCYt3jqP4rRP2rr5Ye8fs0LQ/videos' with yt_dlp.YoutubeDL(ydl_opts) as ydl: error_code = ydl.download([url])
关键修正点说明
- 输出模板:将写死的
.mp3改为%(ext)s,适配配置中指定的音频格式,保持灵活性 - 音频格式:将
preferredcodec从m4a改为mp3,完全匹配原命令的--audio-format mp3 - 元数据配置:添加
addmetadata: True对应原命令的--add-metadata,同时将postprocessor_args调整为列表格式(yt-dlp要求FFmpeg参数以列表形式传入,避免解析错误) - 格式选择:将
format改为bestaudio/best,确保优先获取最优质的音频源,再通过后处理转码为MP3
内容的提问来源于stack exchange,提问作者vishvAs vAsuki
相关产品推荐
相关产品推荐

