diff options
author | Raymaekers Luca <raymaekers.luca@gmail.com> | 2023-02-15 16:31:56 +0100 |
---|---|---|
committer | Raymaekers Luca <raymaekers.luca@gmail.com> | 2023-02-15 16:47:43 +0100 |
commit | 3b2a78935fd6550521f719a10e5b0fceb1ddb350 (patch) | |
tree | 7c50801d6bb5b7abba3df6352ed43df454a4dbcb /config/X/xmonad/autostart/yt-not.sh |
Not really but, First commit!
Diffstat (limited to 'config/X/xmonad/autostart/yt-not.sh')
-rwxr-xr-x | config/X/xmonad/autostart/yt-not.sh | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/config/X/xmonad/autostart/yt-not.sh b/config/X/xmonad/autostart/yt-not.sh new file mode 100755 index 0000000..a68f0c3 --- /dev/null +++ b/config/X/xmonad/autostart/yt-not.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +ytnotdir="$HOME/.local/share/yt-not" + +get_notification() +{ + + cat "${ytnotdir}/channels.yt-not" | \ + while read line + do + channelId="$(echo "$line" | awk '{print $1}')" + ch_name="$(echo "$line" | awk '{print $2}')" + pre_vId="$(echo "$line" | awk '{print $3}')" + # Get last vid from xml feed + new_vId="$(curl -s "https://www.youtube.com/feeds/videos.xml?channel_id=${channelId}" | sed '/videoId/!d;s/^.*>\(.*\)<.*$/\1/g' | head -n1)" + if [ "$new_vId" != "$pre_vId" ] + then + dunstify "yt-notify" "NEW VID!! from\n${ch_name}" + newline=$(echo "$line" | sed "s/$pre_vId/$new_vId/") + sed -i "s/$line/$newline/" "${ytnotdir}/channels.yt-not" + fi + done +} + +# Two valid formats: +# 1: @channel +# 2: channelId @channel videoId +parse_channels() +{ + cat "${ytnotdir}/channels.yt-not" | \ + while read line + do + # First word of line is channelId or channelTag + chidot="$(echo "$line" | awk '{print $1}')" + # Tags start with @ + if [ "${chidot::1}" == "@" ] + then + # channel tag -> channelId + channelId="$(curl -s "https://www.youtube.com/${chidot}" | pup 'meta[itemprop="channelId"] attr{content}')" + sed -i "s/${chidot}/${channelId} ${chidot} novideo/" "${ytnotdir}/channels.yt-not" + fi + done +} + +main() +{ + mkdir -p "${ytnotdir}" + if [ ! -f "${ytnotdir}/channels.yt-not" ] + then + echo "@bugswriter_" > "${ytnotdir}/channels.yt-not" + echo "@DistroTube" >> "${ytnotdir}/channels.yt-not" + echo "@MentalOutlaw" >> "${ytnotdir}/channels.yt-not" + echo "@Fireship" >> "${ytnotdir}/channels.yt-not" + fi + + while true + do + sleep 15m + parse_channels + get_notification + done +} + +main |