自动备份你喜欢的油管up主视频

对于最近乳透社被b站和油管资本家联合橄榄一事,我深感痛心。前几天我研究了一下youtube-dlc,发现这是个备份视频的好工具。

话不多说,直接讲讲我是如何操作的。

首先,你需要一台ubuntu server, (win10的电脑自带的ubuntu也可以),还有足够大的存储。

ubuntu server基本上自带python3, 但是有些不带pip, 如果没有pip的话这里我们安装下pip

sudo apt update
sudo apt install python3-pip

然后我们就可以安装youtube-dlc了

python3 -m pip install youtube-dlc

youtube-dlc官方文档
安装完之后,可以先用youtube-dlc命令试一下怎样下载
注意:如果安装时出现

WARNING: The script youtube-dlc is installed in '/home/username/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

类似情况,首先echo $HOME,我得到的是/home/username/, 然后执行这一句

export PATH="$HOME/.local/bin:$PATH"

就能直接使用了。
前几天我已经知道了youtube-dlc的基本用法,所以这次我写了个shell文件,命名为auto.sh

#/!bin/bash
if [ "$#" -ne 1 ]; then
        echo "Number of arguments incorrect"
        exit 1
fi
file="${1}"
if [ -r ${file} ]; then
        while IFS=  read -r line
        do
                OLD_IFS=$IFS
                folder=0
                filename=""
                for i in $line; do
                        IFS=$' '
                        for j in $i; do
                                if [ $folder -ne 1 ]; then
                                        filename=$j
                                        folder=1
                                else
                                        youtube-dlc -i -o "$j/%(title)s.%(ext)s" $filename
                                        folder=0
                                fi
                        done
                done
                IFS=$OLD_IFS
        done < "$file"
fi

然后我创建了一个文件download.txt,文件的内容是这样的

https://www.youtube.com/user/simonyapp/ simonyapp
https://www.youtube.com/channel/UCBJjJJIUgliRQd7z-cISj8g/videos dead-channel

意思就是把第一个user所有的视频下到simonyapp文件夹,把第二个channel的所有视频下到dead-channel文件夹

chmod u+x auto.sh
./auto.sh download.txt

然后,crontab -e 打开文件,如果没有的话先sudo apt install cron
打开crontab, 然后参照此教程,自动运行脚本

30 17 * * 2 sh /directory/auto.sh download.txt

即为每周二下午五点三十分执行此脚本
(上文的/directory/auto.sh为你程序的绝对路径)

Addition:
墙内用户请设置代理,命令为--proxy URL

3 Likes