summaryrefslogtreecommitdiff
path: root/config/X/xmonad/xmonad.disabled/autostart/yt-not.sh
diff options
context:
space:
mode:
authorRaymaekers Luca <raymaekers.luca@gmail.com>2023-02-15 16:31:56 +0100
committerRaymaekers Luca <raymaekers.luca@gmail.com>2023-02-15 16:47:43 +0100
commit3b2a78935fd6550521f719a10e5b0fceb1ddb350 (patch)
tree7c50801d6bb5b7abba3df6352ed43df454a4dbcb /config/X/xmonad/xmonad.disabled/autostart/yt-not.sh
Not really but, First commit!
Diffstat (limited to 'config/X/xmonad/xmonad.disabled/autostart/yt-not.sh')
-rwxr-xr-xconfig/X/xmonad/xmonad.disabled/autostart/yt-not.sh63
1 files changed, 63 insertions, 0 deletions
diff --git a/config/X/xmonad/xmonad.disabled/autostart/yt-not.sh b/config/X/xmonad/xmonad.disabled/autostart/yt-not.sh
new file mode 100755
index 0000000..a68f0c3
--- /dev/null
+++ b/config/X/xmonad/xmonad.disabled/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