142 lines
3.8 KiB
Bash
142 lines
3.8 KiB
Bash
#!/bin/sh
|
|
########################################
|
|
# name: yt
|
|
# lisc: gnu gplv3
|
|
# main: jadedctrl
|
|
# desc: browse youtube from the terminal
|
|
########################################
|
|
|
|
# ... there's got to be a better way to
|
|
# source this.
|
|
if test -e ytlib.sh; then
|
|
. ./ytlib.sh
|
|
elif test -e lib/ytlib.sh; then
|
|
. ./lib/ytlib.sh
|
|
elif test -e ../lib/ytlib.sh; then
|
|
. ../lib/ytlib.sh
|
|
elif test -e /usr/local/lib/ytlib.sh; then
|
|
. /usr/local/lib/ytlib.sh
|
|
elif test -e /usr/lib/ytlib.sh; then
|
|
. /usr/lib/ytlib.sh
|
|
else
|
|
echo "ytlib.sh not found."
|
|
exit 5
|
|
fi
|
|
|
|
# --------------------------------------
|
|
|
|
# Show usage message of shelltube itself
|
|
function yt_usage {
|
|
echo "usage: yt command subcommand [arguments]"
|
|
echo " yt (v)ideo [...]"
|
|
echo " yt (p)laylist [...]"
|
|
exit 2
|
|
}
|
|
|
|
# --------------------------------------
|
|
|
|
if test -z "$1"; then
|
|
yt_usage
|
|
fi
|
|
|
|
# --------------------------------------
|
|
|
|
# Show usage message of the video subcommand
|
|
function video_usage {
|
|
echo "usage: yt video (s)earch [...]"
|
|
echo " yt video (t)itle [...]"
|
|
echo " yt video (d)esc [...]"
|
|
echo " yt video (a)uthor [...]"
|
|
echo " yt video (v)iews [...]"
|
|
echo " yt video (D)ate [...]"
|
|
|
|
exit 2
|
|
}
|
|
|
|
# Pass on commands to video subcommand
|
|
function video_invocation {
|
|
local command="$1"
|
|
local arguments="$(echo "$@" | awk '{$1=""; print}')"
|
|
|
|
if test -z "$command"; then
|
|
video_usage
|
|
elif test "$(length "$arguments")" -eq 0; then
|
|
arguments="-h"
|
|
fi
|
|
|
|
case "$command" in
|
|
"search") video_search_invocation $arguments;;
|
|
"s") video_search_invocation $arguments;;
|
|
"d") video_desc_invocation $arguments;;
|
|
"desc") video_desc_invocation $arguments;;
|
|
"D") video_uploaded_invocation $arguments;;
|
|
"date") video_uploaded_invocation $arguments;;
|
|
"views") video_views_invocation $arguments;;
|
|
"v") video_views_invocation $arguments;;
|
|
"author") video_author_invocation $arguments;;
|
|
"a") video_author_invocation $arguments;;
|
|
"title") video_title_invocation $arguments;;
|
|
"t") video_title_invocation $arguments;;
|
|
"help") video_usage;;
|
|
"h") video_usage;;
|
|
esac
|
|
}
|
|
|
|
# --------------------------------------
|
|
|
|
# Show playlist usage message
|
|
function playlist_usage {
|
|
echo "usage: yt playlist (s)earch [...]"
|
|
echo " yt playlist (l)ist [...]"
|
|
echo " yt playlist (t)itle [...]"
|
|
echo " yt playlsit (a)uthor [...]"
|
|
echo " yt playlist (v)iews [...]"
|
|
echo " yt playlist (D)ate [...]"
|
|
exit 2
|
|
}
|
|
|
|
# Pass on commands to the playlist subcommand
|
|
function playlist_invocation {
|
|
local command="$1"
|
|
local arguments="$(echo "$@" | awk '{$1=""; print}')"
|
|
|
|
if test -z "$command"; then
|
|
playlist_usage
|
|
elif test "$(length "$arguments")" -eq 0; then
|
|
arguments="-h"
|
|
fi
|
|
|
|
case "$command" in
|
|
"search") playlist_search_invocation $arguments;;
|
|
"s") playlist_search_invocation $arguments;;
|
|
"views") playlist_views_invocation $arguments;;
|
|
"v") playlist_views_invocation $arguments;;
|
|
"author") playlist_author_invocation $arguments;;
|
|
"a") playlist_author_invocation $arguments;;
|
|
"date") playlist_uploaded_invocation $arguments;;
|
|
"D") playlist_uploaded_invocation $arguments;;
|
|
"title") playlist_title_invocation $arguments;;
|
|
"t") playlist_title_invocation $arguments;;
|
|
"list") playlist_list_invocation $arguments;;
|
|
"l") playlist_list_invocation $arguments;;
|
|
"help") playlist_usage;;
|
|
"h") playlist_usage;;
|
|
esac
|
|
}
|
|
|
|
|
|
|
|
# --------------------------------------
|
|
# actual invocation
|
|
|
|
command="$1"
|
|
arguments="$(echo "$@" | awk '{$1=""; print}')"
|
|
case "$command" in
|
|
*video) video_invocation $arguments;;
|
|
*v) video_invocation $arguments;;
|
|
*channel) channel_invocation $arguments;;
|
|
*c) channel_invocation $arguments;;
|
|
*playlist) playlist_invocation $arguments;;
|
|
*p) playlist_invocation $arguments;;
|
|
esac
|