subscriptions script enhanced + mpv update changes
This commit is contained in:
parent
10b93638d6
commit
07ec087826
2
.profile
2
.profile
|
@ -11,7 +11,7 @@ export EDITOR="vim"
|
|||
export VIDEO_FORMATS="mp4,mkv,avi,ogv,webm,divx,wmv,flv"
|
||||
export AUDIO_FORMATS="mp3,ogg,vorbis,opus,aac,wav,3gp,mpg,flac"
|
||||
export YTDL_FORMAT='bestvideo[height=1080]+bestaudio/bestvideo[height=1440]+bestaudio/[height=1080]/[height=1440]/bestvideo[height<2160]+bestaudio/bestvideo+bestaudio/best'
|
||||
export VIDEOPLAYER="mpv --ytdl-format $YTDL_FORMAT"
|
||||
export VIDEOPLAYER="mpv --ytdl-format=$YTDL_FORMAT"
|
||||
export AUDIOPLAYER="cmus-remote"
|
||||
export TERMINAL="st"
|
||||
export BROWSER="firefox-bin"
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
cleanup() {
|
||||
killall youtube-dl
|
||||
}
|
||||
trap cleanup INT TERM
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 [-f <file>] [-u] [-h]" 1>&2
|
||||
echo "" 1>&2
|
||||
|
@ -14,6 +19,25 @@ usage() {
|
|||
exit 1
|
||||
}
|
||||
|
||||
video_upload_date() {
|
||||
fifo="/tmp/wlvfs-fifo$(date +%s%N)"
|
||||
mkfifo "$fifo"
|
||||
|
||||
youtube-dl -o "%(upload_date)s" "$1" 2>/dev/null > "$fifo" &
|
||||
filename_search_pid="$!"
|
||||
|
||||
file=""
|
||||
while read -r line; do
|
||||
file=$(echo "$line" | grep 'Destination:')
|
||||
[ -n "$file" ] && kill -TERM "$filename_search_pid"
|
||||
done < "$fifo"
|
||||
|
||||
rm "$fifo"
|
||||
file=$(echo "$file" | cut -d " " -f 3)
|
||||
echo "$file" | sed -E 's|([0-9]+)(\.)(.+)|\1|'
|
||||
rm "$file.part"
|
||||
}
|
||||
|
||||
while getopts ":uf:" option; do
|
||||
case "${option}" in
|
||||
u)
|
||||
|
@ -56,57 +80,95 @@ fi
|
|||
grep -vE '^#|^$|^!' "$subs_file" | while read line; do
|
||||
channel=$(echo "$line" | awk '{print $1}')
|
||||
last_video=$(echo "$line" | awk '{print $2}')
|
||||
upload_frequency=$(echo "$line" | awk '{print $3}')
|
||||
prev_upload_frequency=$(echo "$line" | awk '{print $4}')
|
||||
manual_preference=$(echo "$line" | awk '{print $5}')
|
||||
update_date=$(echo "$line" | awk '{print $3}')
|
||||
upload_frequency=$(echo "$line" | awk '{print $4}')
|
||||
prev_upload_frequency=$(echo "$line" | awk '{print $5}')
|
||||
manual_preference=$(echo "$line" | awk '{print $6}')
|
||||
|
||||
new_last_video="$last_video"
|
||||
new_update_date="$update_date"
|
||||
new_upload_frequency="$upload_frequency"
|
||||
new_prev_upload_frequency="$prev_upload_frequency"
|
||||
new_manual_preference="$manual_preference"
|
||||
|
||||
if [ -z "$manual_preference" ]; then
|
||||
num_w=$(echo "$line" | wc -w)
|
||||
|
||||
[ "$num_w" -lt 6 ] && {
|
||||
echo "Preprocessing: $channel"
|
||||
if [ -z "$last_video" ] || [ "$last_video" = "-" ]; then
|
||||
new_last_video=$(youtube-dl --get-id \
|
||||
"https://invidio.us/channel/$channel" 2>/dev/null \
|
||||
| head -n 1)
|
||||
[ -z "$new_last_video" ] && new_last_video="-"
|
||||
new_upload_frequency=0
|
||||
new_prev_upload_frequency=0
|
||||
new_manual_preference=0
|
||||
elif [ -z "$upload_frequency" ]; then
|
||||
new_last_video="$last_video"
|
||||
new_upload_frequency=0
|
||||
new_prev_upload_frequency=0
|
||||
new_manual_preference=0
|
||||
elif [ -z "$prev_upload_frequency" ]; then
|
||||
new_last_video="$last_video"
|
||||
new_upload_frequency="$upload_frequency"
|
||||
new_prev_upload_frequency=0
|
||||
new_manual_preference=0
|
||||
else
|
||||
new_last_video="$last_video"
|
||||
new_upload_frequency="$upload_frequency"
|
||||
new_prev_upload_frequency="$prev_upload_frequency"
|
||||
new_manual_preference=0
|
||||
fi
|
||||
|
||||
sed -E "s|($channel)(\t$last_video)?(\t$upload_frequency)?(\t$prev_upload_frequency)?(\t$manual_preference)?|$channel\t$new_last_video\t$new_upload_frequency\t$new_prev_upload_frequency\t$new_manual_preference|" "$subs_file" -i
|
||||
fi
|
||||
case $num_w in
|
||||
1)
|
||||
new_last_video=$(youtube-dl --get-id \
|
||||
"https://invidio.us/channel/$channel" 2>/dev/null \
|
||||
| head -n 1)
|
||||
|
||||
new_update_date=$(video_upload_date $new_last_video)
|
||||
|
||||
[ -z "$new_last_video" ] && new_last_video="-"
|
||||
new_update_date=$(date +'%Y%m%d')
|
||||
new_upload_frequency=0
|
||||
new_prev_upload_frequency=0
|
||||
new_manual_preference=0
|
||||
;;
|
||||
2)
|
||||
if [ "$last_video" = "-" ]; then
|
||||
new_last_video=$(youtube-dl --get-id \
|
||||
"https://invidio.us/channel/$channel" 2>/dev/null \
|
||||
| head -n 1)
|
||||
[ -z "$new_last_video" ] && new_last_video="-"
|
||||
new_update_date=$(video_upload_date $new_last_video)
|
||||
new_upload_frequency=0
|
||||
new_prev_upload_frequency=0
|
||||
new_manual_preference=0
|
||||
else
|
||||
new_update_date=$(date +'%Y%m%d')
|
||||
new_upload_frequency=0
|
||||
new_prev_upload_frequency=0
|
||||
new_manual_preference=0
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
new_upload_frequency=0
|
||||
new_prev_upload_frequency=0
|
||||
new_manual_preference=0
|
||||
|
||||
;;
|
||||
4)
|
||||
new_prev_upload_frequency=0
|
||||
new_manual_preference=0
|
||||
|
||||
;;
|
||||
5)
|
||||
new_manual_preference=0
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
sed -E "s|($channel)(\t$last_video)?(\t$update_date)?(\t$upload_frequency)?(\t$prev_upload_frequency)?(\t$manual_preference)?|$channel\t$new_last_video\t$new_update_date\t$new_upload_frequency\t$new_prev_upload_frequency\t$new_manual_preference|" "$subs_file" -i
|
||||
}
|
||||
done
|
||||
|
||||
|
||||
# Processing
|
||||
rm $videos_file 2> /dev/null
|
||||
|
||||
grep -vE '^#|^$|^!' "$subs_file" | sort -rg -k 5 -k 4 -k 3 | while read line; do
|
||||
grep -vE '^#|^$|^!' "$subs_file" | sort -rg -k 6 -k 5 -k 4 | while read line; do
|
||||
channel=$(echo "$line" | awk '{print $1}')
|
||||
last_video=$(echo "$line" | awk '{print $2}')
|
||||
upload_frequency=$(echo "$line" | awk '{print $3}')
|
||||
prev_upload_frequency=$(echo "$line" | awk '{print $4}')
|
||||
manual_preference=$(echo "$line" | awk '{print $5}')
|
||||
update_date=$(echo "$line" | awk '{print $3}')
|
||||
upload_frequency=$(echo "$line" | awk '{print $4}')
|
||||
prev_upload_frequency=$(echo "$line" | awk '{print $5}')
|
||||
manual_preference=$(echo "$line" | awk '{print $6}')
|
||||
|
||||
echo "Processing: $channel on Preference: $manual_preference - $prev_upload_frequency"
|
||||
|
||||
temp="/tmp/wlvfs"
|
||||
dash $TSCRIPTS/channel-videos-after.sh "https://youtube.com/channel/$channel" "$last_video" | tee "$temp" | \
|
||||
dateafter="$update_date"
|
||||
[ "$update_date" = "-" ] && dateafter=""
|
||||
|
||||
dash $TSCRIPTS/channel-videos-after.sh \
|
||||
"https://youtube.com/channel/$channel" "$last_video" "$dateafter" |
|
||||
tee "$temp" |
|
||||
while read video; do
|
||||
printf "\tFound video: %s\n" "$video"
|
||||
if [ ! -f "$videos_file" ]; then
|
||||
|
@ -120,7 +182,7 @@ fi
|
|||
{
|
||||
sleep 5
|
||||
[ ! -f "$videos_file" ] && echo "ytdl://$video" >> \
|
||||
$videos_file
|
||||
$videos_file
|
||||
} &
|
||||
fi
|
||||
done
|
||||
|
@ -128,16 +190,17 @@ fi
|
|||
[ -z "$new_last_video" ] && new_last_video="$last_video"
|
||||
new_upload_frequency=$(( $(wc -l "$temp" | \
|
||||
awk '{print $1}') + $upload_frequency ))
|
||||
new_update_date=$(video_upload_date $new_last_video)
|
||||
|
||||
if [ "$update_now" ] || \
|
||||
{ [ "$(echo "$(date +%j) % 14" | bc)" -eq 0 ] && [ ! "$already_updated" ]; }
|
||||
then
|
||||
sed \
|
||||
"s|$channel\t$last_video\t$upload_frequency\t$prev_upload_frequency|$channel\t$new_last_video\t0\t$new_upload_frequency|" \
|
||||
"s|$channel\t$last_video\t$update_date\t$upload_frequency\t$prev_upload_frequency|$channel\t$new_last_video\t$new_update_date\t0\t$new_upload_frequency|" \
|
||||
"$subs_file" -i
|
||||
else
|
||||
sed \
|
||||
"s|$channel\t$last_video\t$upload_frequency\t$prev_upload_frequency|$channel\t$new_last_video\t$new_upload_frequency\t$prev_upload_frequency|" \
|
||||
"s|$channel\t$last_video\t$update_date\t$upload_frequency\t$prev_upload_frequency|$channel\t$new_last_video\t$new_update_date\t$new_upload_frequency\t$prev_upload_frequency|" \
|
||||
"$subs_file" -i
|
||||
fi
|
||||
|
||||
|
|
|
@ -3,7 +3,11 @@
|
|||
channel="$1"
|
||||
last_watched_video="$2"
|
||||
|
||||
youtube-dl --get-id "$channel" 2>/dev/null | while read line &&
|
||||
[ -n "$3" ] && dateafter="--dateafter $3"
|
||||
|
||||
dash "$TSCRIPTS/no-response-timeout.sh" 19 youtube-dl --get-id "$channel" \
|
||||
$dateafter 2>/dev/null | \
|
||||
while read -r line &&
|
||||
[ "$line" != "$last_watched_video" ]; do
|
||||
echo "$line"
|
||||
done
|
||||
|
|
22
termscripts/no-response-timeout.sh
Normal file
22
termscripts/no-response-timeout.sh
Normal file
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
time="$1"
|
||||
shift
|
||||
|
||||
(sleep "$time" && kill -INT "$$" 2>/dev/null) &
|
||||
checkpoint_pid="$!"
|
||||
|
||||
fifo="/tmp/no-response-timout-fifo$(date +%s%N)"
|
||||
mkfifo "$fifo"
|
||||
sh -c "$*" > "$fifo" &
|
||||
|
||||
while read line; do
|
||||
kill "$checkpoint_pid"
|
||||
(sleep "$time" && kill -INT "$$" 2>/dev/null) &
|
||||
checkpoint_pid="$!"
|
||||
|
||||
echo "$line"
|
||||
done < "$fifo"
|
||||
|
||||
rm "$fifo"
|
||||
kill "$checkpoint_pid" 2>/dev/null
|
Loading…
Reference in a new issue