5分钟搞定视频定时下载:yt-dlp自动化脚本全攻略

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 创建基本任务
  1. 在右侧"操作"面板点击"创建基本任务..."
  2. 输入名称(如"yt-dlp自动下载")和描述,点击下一步
  3. 触发器选择"每天",点击下一步
  4. 设置开始时间(如23:00),点击下一步
  5. 操作选择"启动程序",点击下一步
  6. 浏览选择之前创建的video_downloader.bat文件
  7. 点击完成,在弹出的对话框中勾选"打开属性对话框"
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自动化下载系统。关键注意点:

  1. 合规使用:确保下载的视频内容符合版权法规和平台条款
  2. 定期维护:每月检查一次脚本运行情况和日志文件
  3. 资源管理:避免设置过短的下载间隔,尊重网站服务器负载
  4. 安全防护:只从可信来源获取视频URL,定期扫描下载文件

现在,你可以坐享其成,让视频内容自动下载到你的设备中。如需进一步定制,可以探索yt-dlp的插件系统后处理选项,实现字幕自动下载、视频格式转换等更多功能。

祝你的自动化下载之旅愉快!

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值