142 lines
3.9 KiB
Bash
142 lines
3.9 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
|