Я пытаюсь создать youtube-dl
архивный скрипт, который соответствует определенному количеству моих потребностей.Пока что у меня есть скрипт ниже, запущенный в /etc/cron.daily
, но он не позволяет мне делать некоторые вещи, которые я считаю необходимыми из-за сетевых ограничений.Поскольку я хочу, чтобы скрипт выполнял все загрузки одновременно, я не могу легко остановить загрузки, не отслеживая отдельные идентификаторы PID.Я пытался превратить этот скрипт в сервис, но не уверен, что это будет правильным решением для того, что я пытаюсь сделать.
В конечном итоге я хочу сделать остановкусценарий так же просто, как вводить что-то вроде youtube-dl_archive stop
, при этом позволяя сценарию автоматически запускаться ежедневно.
#!/bin/sh
umask 022
cat /mnt/archive/youtube-dl/youtube-dl_channels | while read line
do
if [[ $line = "channel"* ]]; then
archivedir=$(cut -c34- <<< "$line")
channeluid=$(cut -c-32 <<< "$line")
elif [[ $line = "user"* ]]; then
archivedir=$(cut -c6- <<< "$line")
channeluid="$line"
fi
exec &> /var/log/youtube-dl/$archivedir-[$(date +"%m.%d.%Y_%H-%M-%S")].log
youtube-dl\
-civw\
--newline\
--all-subs\
--no-mtime\
--embed-subs\
--add-metadata\
--write-thumbnail\
--prefer-ffmpeg\
--merge-output-format mkv\
--download-archive /mnt/archive/youtube-dl/"$archivedir"/"$archivedir"-archive.txt\
https://www.youtube.com/$channeluid\
-o "/mnt/archive/youtube-dl/$archivedir/'%(uploader)s'-(%(uploader_id)s)_%(upload_date)s_'%(title)s'_
[%(resolution)s]_[%(id)s].%(ext)s"
done