2020-07-04 14:23:27 +02:00
|
|
|
#!/bin/zsh
|
|
|
|
#needed if run as cronjob
|
|
|
|
export XDG_VIDEOS_DIR=$HOME/vids
|
|
|
|
DLARCHIVE=$XDG_VIDEOS_DIR/.downloaded
|
|
|
|
DLLOC=$XDG_VIDEOS_DIR
|
|
|
|
CHANNELSFILE=$XDG_VIDEOS_DIR/.channels
|
2020-12-15 13:42:59 +01:00
|
|
|
BLACKLIST=$XDG_VIDEOS_DIR/.blacklist
|
2020-07-04 14:23:27 +02:00
|
|
|
|
|
|
|
# Required to display notifications if run as a cronjob:
|
2020-10-04 15:44:42 +02:00
|
|
|
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus
|
2020-07-04 14:23:27 +02:00
|
|
|
export DISPLAY=:0.0
|
|
|
|
|
2020-12-26 14:04:07 +01:00
|
|
|
if [ $(pgrep -c ripper) -gt 1 ]; then
|
|
|
|
echo "Ripper already running, exiting new instance..."
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
|
2020-07-04 14:23:27 +02:00
|
|
|
range="now-40years"
|
|
|
|
echo "Scanning for new Videos to download"
|
2020-12-26 14:04:07 +01:00
|
|
|
grep 'youtube' "$CHANNELSFILE" | xargs -L1 lynx --dump --listonly --nonumbers | grep 'videos.xml' | xargs lynx --dump | grep -oE 'yt:video:[^\s\t ]{11,15}' | perl -pe 's/^yt:video:([^ \t\s]*)$/https:\/\/www\.youtube\.com\/watch\?v=\1/' | grep -vf "$BLACKLIST" > /tmp/todownload$$
|
|
|
|
grep 'youtube' "$DLARCHIVE" | sed 's/youtube /https:\/\/www\.youtube\.com\/watch?v=/' > /tmp/alreadydownloaded$$
|
2020-07-04 14:23:27 +02:00
|
|
|
|
2020-12-26 14:04:07 +01:00
|
|
|
grep 'bitchute' "$CHANNELSFILE" | xargs -L1 lynx --dump --nonumbers -listonly $1 | grep 'bitchute\.com\/video' | sort -u | grep -vf "$BLACKLIST" >> /tmp/todownload$$
|
|
|
|
grep 'bitchute' "$DLARCHIVE" | sed 's/bitchute /https:\/\/www\.bitchute\.com\/video\//' >> /tmp/alreadydownloaded$$
|
2020-07-04 14:23:27 +02:00
|
|
|
|
2020-12-26 14:04:07 +01:00
|
|
|
number=$(grep -vf /tmp/alreadydownloaded$$ /tmp/todownload$$ | sort -u | wc -l)
|
2020-07-04 14:23:27 +02:00
|
|
|
if [ $number -gt 0 ]; then
|
2020-12-26 14:04:07 +01:00
|
|
|
[ $number -gt 1 ] && plural="s"
|
|
|
|
notify-send "Channel Ripper" "$number new video$plural available for download, downloading now."
|
|
|
|
echo "$number new video$plural for download available, downloading now."
|
2020-12-25 21:54:03 +01:00
|
|
|
if [ "$number" -lt 10 ];then
|
2020-12-26 14:04:07 +01:00
|
|
|
grep -vf /tmp/alreadydownloaded$$ /tmp/todownload$$ | sort -u | xargs -L1 youtube-dl --get-filename -o "'%(uploader)s' '%(title)s'" $1 | xargs -L1 notify-send
|
2020-12-25 21:54:03 +01:00
|
|
|
fi
|
2020-12-26 14:04:07 +01:00
|
|
|
grep -vf /tmp/alreadydownloaded$$ /tmp/todownload$$ | sort -u > /tmp/new_videos$$
|
|
|
|
rm -f /tmp/alreadydownloaded$$ /tmp/todownload$$
|
|
|
|
youtube-dl --hls-prefer-native -i --download-archive $DLARCHIVE --dateafter $range -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' --add-metadata -o "$DLLOC/%(uploader)s/%(upload_date)s-%(title)s.%(ext)s" -a /tmp/new_videos$$
|
|
|
|
rm -f /tmp/new_videos$$
|
2020-07-04 14:23:27 +02:00
|
|
|
notify-send "Channel Ripper" "Finished downloading"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $number -eq 0 ]; then
|
|
|
|
echo "No new Videos"
|
|
|
|
fi
|