介绍
小白很久之前介绍过一款好用的YouTube视频下载工具:Youtube 专业下载工具,Youtube-dl & yt-dlp详细使用教程与初学上手示例,我们可以非常方便的把自己喜欢的油管up主的视频下载下来,但是每次都需要手动输入命令行下载,总感觉差了点意思,要是可以每天自动定时下载,岂不美哉。
yt-dlp下载脚本
关于yt-dlp的安装以及使用,Youtube 专业下载工具,Youtube-dl & yt-dlp详细使用教程与初学上手示例,这篇教程已经写的很清楚了,此处不再赘述,我们只需要一个简单的脚本即可,以不良林的油管视频为例:
#!/bin/bash yt-dlp -o "%(title).150B [%(id)s].%(ext)s" -f 22 https://www.youtube.com/@bulianglin/videos
说明:
- 为了避免视频文件名过长的问题,小白这里统一限制下文件名长度
- 我们采用22号格式,也就是720P的视频,如果需要其他格式的请自行更改
我们将以上的脚本文件保存为down-yt.sh,并赋予执行权限:
chmod +x down-yt.sh
小白试了下,发现yt-dlp默认是下载到当前的目录的,所以我们需要手动指定下载目录。要将视频下载到指定路径,可以在 -o
选项中使用目标路径。以下是一个示例 shell 脚本,它将下载指定 YouTube 视频到 /Users/yourname/Downloads
目录下:
#!/bin/bash yt-dlp -o "/Users/yourname/Downloads/%(title).150B [%(id)s].%(ext)s" -f 22 https://www.youtube.com/@bulianglin/videos
在这个示例中,我们在 -o
选项中指定了目标路径 /Users/yourname/Downloads/
,这是一个可替换为您自己的目标路径的示例路径。下载的视频文件将被保存在该目录下,并按照指定的格式命名。
请注意,您需要确保目标路径已经存在,否则下载会失败。如果您希望 shell 脚本能够创建目标路径(如果它不存在的话),您可以在脚本中添加一条 mkdir
命令,例如:
#!/bin/bash mkdir -p /Users/yourname/Downloads/ yt-dlp -o "/Users/yourname/Downloads/%(title).150B [%(id)s].%(ext)s" -f 22 https://www.youtube.com/@bulianglin/videos
加入定时任务
要将脚本添加到定时任务中,您可以使用 Linux 系统中的 cron
服务。cron
是一个可以在指定时间间隔内自动运行脚本的服务。
以下是将 shell 脚本添加到 cron
中以在每天凌晨 5 点自动运行的步骤:
- 打开终端并输入
crontab -e
命令,这将打开您的cron
定时任务配置文件。 - 如果您第一次打开此文件,系统会提示您选择默认编辑器,可以选择
nano
或vi
等。 - 在文件末尾添加以下一行:
0 5 * * * /bin/bash /path/to/down-yt.sh
- 这行将每天凌晨 5 点执行
/path/to/download_script.sh
脚本。请将/path/to/download_script.sh
替换为您自己的脚本路径。如果脚本不在 PATH 中,需要使用绝对路径。0 5 * * *
是一个 cron 格式的时间表达式,它指定了脚本运行的时间。在这个例子中,它的含义是“在每天的第 0 分钟和第 5 小时运行脚本”。 - 保存并关闭文件。如果您使用
nano
编辑器,则按Ctrl + X
,然后按Y
保存文件。 - 重启
cron
服务,以使更改生效。在终端中输入以下命令:sudo systemctl restart cron
或者,如果您的系统没有使用systemd
,则可能需要运行以下命令:sudo service cron restart
现在,您的 shell 脚本将被添加到
cron
定时任务中,并在每天凌晨 5 点自动运行。如果您希望更改运行时间,可以修改cron
时间表达式。