#!/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