5分钟搞定视频定时下载:yt-dlp自动化脚本全攻略
你还在手动熬夜等待直播结束?还在重复下载每周更新的剧集?本文将带你用5分钟搭建yt-dlp自动化下载系统,通过cron(Linux/Mac)或任务计划程序(Windows)实现视频定时下载,从此告别重复操作,让内容自动“送上门”。
读完本文你将掌握:
- 3步创建yt-dlp下载脚本
- Linux/Mac下cron定时任务配置
- Windows任务计划程序详细设置
- 自动化下载错误处理与日志管理
- 高级技巧:动态更新下载列表
一、准备工作:yt-dlp基础配置
1.1 安装yt-dlp
确保已安装最新版yt-dlp,推荐使用官方发布的独立二进制文件:
- Windows用户:下载yt-dlp.exe
- Mac用户:下载yt-dlp_macos
- Linux用户:下载yt-dlp
验证安装是否成功:
yt-dlp --version
1.2 基础下载命令
创建一个简单的下载命令模板,后续自动化脚本将基于此扩展:
# 基础命令示例:下载最高画质视频并嵌入元数据
yt-dlp -f bestvideo+bestaudio/best --embed-metadata --write-description "https://www.youtube.com/watch?v=example"
参数说明:
-f bestvideo+bestaudio/best:自动选择最佳音视频组合--embed-metadata:将视频信息嵌入文件元数据--write-description:保存视频描述到文本文件
更多参数可参考README.md中的"下载选项"章节。
二、核心步骤:创建自动化下载脚本
2.1 编写下载脚本
创建video_downloader.sh(Linux/Mac)或video_downloader.bat(Windows)文件,保存到~/yt-dlp-scripts/目录。
Linux/Mac示例(video_downloader.sh):
#!/bin/bash
# 视频下载自动化脚本
# 配置区域
DOWNLOAD_DIR="$HOME/Videos/yt-dlp-auto" # 下载文件保存路径
URL_LIST="$HOME/yt-dlp-scripts/urls.txt" # 视频URL列表文件
LOG_FILE="$HOME/yt-dlp-scripts/download.log" # 日志文件路径
YT_DLP_PATH="/usr/local/bin/yt-dlp" # yt-dlp可执行文件路径
# 创建保存目录
mkdir -p "$DOWNLOAD_DIR"
# 记录开始时间
echo "===== 开始下载: $(date) =====" >> "$LOG_FILE"
# 执行下载(跳过已下载文件,添加10秒延迟避免请求过于频繁)
"$YT_DLP_PATH" -f bestvideo+bestaudio/best \
--embed-metadata --write-description \
--no-overwrites --sleep-interval 10 \
-o "$DOWNLOAD_DIR/%(title)s.%(ext)s" \
-a "$URL_LIST" >> "$LOG_FILE" 2>&1
# 记录结束时间
echo "===== 下载结束: $(date) =====" >> "$LOG_FILE"
echo "----------------------------------------" >> "$LOG_FILE"
Windows示例(video_downloader.bat):
@echo off
REM 视频下载自动化脚本
REM 配置区域
set DOWNLOAD_DIR=C:\Videos\yt-dlp-auto
set URL_LIST=C:\yt-dlp-scripts\urls.txt
set LOG_FILE=C:\yt-dlp-scripts\download.log
set YT_DLP_PATH=C:\Tools\yt-dlp.exe
REM 创建保存目录
mkdir "%DOWNLOAD_DIR%"
REM 记录开始时间
echo ===== 开始下载: %date% %time% ===== >> "%LOG_FILE%"
REM 执行下载
"%YT_DLP_PATH%" -f bestvideo+bestaudio/best ^
--embed-metadata --write-description ^
--no-overwrites --sleep-interval 10 ^
-o "%DOWNLOAD_DIR%\%%(title)s.%%(ext)s" ^
-a "%URL_LIST%" >> "%LOG_FILE%" 2>&1
REM 记录结束时间
echo ===== 下载结束: %date% %time% ===== >> "%LOG_FILE%"
echo ---------------------------------------- >> "%LOG_FILE%"
2.2 创建URL列表文件
在脚本同目录创建urls.txt,每行填入一个视频URL:
https://www.youtube.com/watch?v=example1
https://www.bilibili.com/video/BV1xx4y1z789
https://www.youtube.com/playlist?list=PLw-VjHDlEOgvnmD4Ea0s9wN180t7u9l9R
三、定时任务配置:让脚本自动运行
3.1 Linux/Mac(使用cron)
3.1.1 打开crontab编辑器
crontab -e
3.1.2 添加定时任务
添加以下行实现每天23:00自动执行下载脚本:
# 每天23:00运行yt-dlp下载脚本
0 23 * * * /bin/bash /home/your_username/yt-dlp-scripts/video_downloader.sh
时间格式说明:
* * * * * 命令
- - - - -
| | | | |
| | | | +-- 星期 (0-6, 0=周日)
| | | +---- 月 (1-12)
| | +------ 日 (1-31)
| +-------- 时 (0-23)
+---------- 分 (0-59)
常用示例:
*/30 * * * *:每30分钟执行一次0 8 * * 1-5:工作日每天早上8点执行30 20 * * 6,0:周末晚上8:30执行
3.1.3 验证cron任务
crontab -l # 列出当前用户的所有cron任务
查看cron日志(部分系统需要开启):
grep CRON /var/log/syslog
3.2 Windows(使用任务计划程序)
3.2.1 打开任务计划程序
按下Win + R,输入taskschd.msc,点击确定打开。
3.2.2 创建基本任务
- 在右侧"操作"面板点击"创建基本任务..."
- 输入名称(如"yt-dlp自动下载")和描述,点击下一步
- 触发器选择"每天",点击下一步
- 设置开始时间(如23:00),点击下一步
- 操作选择"启动程序",点击下一步
- 浏览选择之前创建的
video_downloader.bat文件 - 点击完成,在弹出的对话框中勾选"打开属性对话框"
3.2.3 高级设置
在属性对话框中:
- 切换到"触发器"选项卡,选择已创建的触发器,点击"编辑"
- 勾选"延迟任务时间"(可选,如5分钟)
- 切换到"条件"选项卡,取消勾选"只有在计算机使用交流电源时才启动此任务"(笔记本用户)
- 切换到"设置"选项卡,勾选"如果任务失败,按以下频率重试",设置为"10分钟"和"3次"
四、错误处理与日志管理
4.1 日志查看
定期检查日志文件了解下载情况:
# Linux/Mac
tail -n 50 ~/yt-dlp-scripts/download.log
# Windows (在命令提示符中)
type C:\yt-dlp-scripts\download.log | more
4.2 常见错误解决
- 网络问题:检查网络连接,考虑添加
--retry-sleep func:10,30,60,120参数实现指数退避重试 - 视频不存在:检查URL是否有效,移除或替换urls.txt中的无效链接
- 权限问题:确保脚本和保存目录有读写权限,Linux/Mac可执行
chmod +x video_downloader.sh - 版本过旧:定期更新yt-dlp,执行
yt-dlp -U
五、高级技巧:提升自动化体验
5.1 动态更新URL列表
创建update_urls.sh脚本自动从网页或API获取最新视频URL:
#!/bin/bash
# 从指定网页提取视频URL并更新urls.txt
# 示例:从YouTube频道页面提取最新视频URL
curl "https://www.youtube.com/c/ExampleChannel/videos" | \
grep -oE "watch\?v=[A-Za-z0-9_-]{11}" | head -n 5 | \
sed "s|^|https://www.youtube.com/|" > "$HOME/yt-dlp-scripts/urls.txt"
在cron中添加任务,在下载脚本前执行:
# 每天22:50更新URL列表,23:00开始下载
50 22 * * * /bin/bash /home/your_username/yt-dlp-scripts/update_urls.sh
5.2 使用配置文件统一管理参数
创建yt-dlp.conf配置文件,将常用参数集中管理:
# yt-dlp配置文件示例
-f bestvideo+bestaudio/best
--embed-metadata
--write-description
--no-overwrites
--sleep-interval 10
--retry-sleep func:10,30,60,120
--download-archive downloaded.txt
在脚本中引用配置文件:
"$YT_DLP_PATH" --config-locations "$HOME/yt-dlp-scripts/yt-dlp.conf" -a "$URL_LIST"
5.3 下载完成通知(Linux)
添加以下代码到下载脚本末尾,实现下载完成后发送系统通知:
# 检查是否有新文件下载成功
NEW_FILES=$(find "$DOWNLOAD_DIR" -type f -mmin -60 | wc -l)
if [ $NEW_FILES -gt 0 ]; then
notify-send "yt-dlp自动下载完成" "成功下载 $NEW_FILES 个文件"
fi
六、总结与注意事项
通过本文的步骤,你已成功搭建了yt-dlp自动化下载系统。关键注意点:
- 合规使用:确保下载的视频内容符合版权法规和平台条款
- 定期维护:每月检查一次脚本运行情况和日志文件
- 资源管理:避免设置过短的下载间隔,尊重网站服务器负载
- 安全防护:只从可信来源获取视频URL,定期扫描下载文件
现在,你可以坐享其成,让视频内容自动下载到你的设备中。如需进一步定制,可以探索yt-dlp的插件系统和后处理选项,实现字幕自动下载、视频格式转换等更多功能。
祝你的自动化下载之旅愉快!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



