Skip to content

Instantly share code, notes, and snippets.

@metalx1000
Last active January 9, 2018 20:53
Show Gist options
  • Save metalx1000/995b766f797a45a8f69ffe69d29bed0b to your computer and use it in GitHub Desktop.
Save metalx1000/995b766f797a45a8f69ffe69d29bed0b to your computer and use it in GitHub Desktop.
YouTube Subscription Viewer for your Shell
#!/bin/bash
#created by Kris Occhipinti https://filmsbykris.com
#Copyright Jan 9th 2018
#License GPLv3 https://www.gnu.org/licenses/gpl-3.0.txt
sublist="$HOME/.ytsublist"
ua="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) G ecko/20100101 Firefox/21.0"
ytu="https://www.youtube.com/user/"
ytc="https://www.youtube.com/channel/"
#check for sub list and create it if it does not exist
if [ ! -f $sublist ]
then
echo "metalx1000 FilmsByKris" > $sublist
echo "BryanLunduke BryanLunduke" >> $sublist
fi
function getSubs(){
mapfile -t subs < <(cat $sublist|awk '{print $1 " " $2}'|tr '\n' ' ' )
user="$(whiptail --title "Choose a Channel" --menu "MENU" 16 80 9 $subs 3>&2 2>&1 1>&3)"
echo $user
}
function getList(){
if [[ $user == UC* ]]
then
url="${ytc}${user}/videos"
else
url="${ytu}${user}/videos"
fi
wget -qO- --user-agent="$ua" "${url}/videos"|\
grep "yt-ui-ellipsis"|\
while read line
do
title="$(echo "$line"|cut -d\" -f8|\
sed 's/&quot;//g'|sed "s/&#39;/'/g"|tr ' ' '_')"
id="$(echo "$line"|cut -d\" -f14|cut -d\= -f2)"
if [ "$id" != "" ]
then
echo "\"$id\""
echo "\"$title\""
fi
done
}
function vidMenu(){
vid="$(whiptail --title "Video Menu" --menu "Choose a Video" 16 80 9 \
$(getList) 3>&2 2>&1 1>&3)"
video="$(echo "$vid"|sed 's/"//g')"
}
function main(){
getSubs
if [ "$user" = "" ];then exit;fi
while [ 1 ]
do
vidMenu
if [ "$video" = "" ];then break;fi
echo "$video"
mpv "https://www.youtube.com/watch?v=$video"
done
}
while [ 1 ]
do
main
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment