#!/usr/bin/env bash POD_BASE_DIR=${POD_BASE_DIR:-~/Music/} POD_SUB_DIR=${POD_SUB_DIR:-Podcasts} show_usage() { echo "$(basename $0) [ list | play [ FILE ] | pick [-x] | pause | stop | listened | update-feeds | wanted ]" >&2 } show_help() { show_usage cat < /dev/null ; then git_annex_wrap metadata -s "seek_time=${SEEK}" "${FILE}" fi } if [ $# -lt 1 ] ; then show_usage exit 1 fi CMD=$1 shift case "$CMD" in help) show_help exit ;; list) find_unlistened --in=here exit ;; list-all) find_unlistened exit ;; play) pod stop mpc clear if [ $# -lt 1 ] ; then for item in $(find_unlistened --in=here) ; do mpc add $item done else play_pod $1 fi exit ;; pick) CHOSEN_POD='' if [ "$1" == "-x" ] ; then CHOSEN_POD=$(find_unlistened --in=here | cut -d'/' -f 2- | rofi -dmenu -p "podcast") else CHOSEN_POD=$(find_unlistened --in=here | cut -d'/' -f 2- | fzf) fi if [ "${#CHOSEN_POD}" -gt 0 ] ; then play_pod "${POD_SUB_DIR}/${CHOSEN_POD}" fi exit ;; pause) FILE=$(get_cur_file) SEEK=$(get_cur_seek) mpc pause set_loc $FILE $SEEK exit ;; stop) FILE=$(get_cur_file) SEEK=$(get_cur_seek) mpc stop set_loc $FILE $SEEK exit ;; listened) if [ $# -lt 1 ] ; then FILE=$(get_cur_file) git_annex_wrap metadata -s tag=listened $FILE git_annex_wrap metadata -r seek_time $FILE else for FILE in $* ; do git_annex_wrap metadata -s tag=listened $FILE git_annex_wrap metadata -r seek_time $FILE done fi exit ;; update-feeds) CUR_DIR=$(pwd) cd $POD_BASE_DIR grep -v '^# ' ${POD_SUB_DIR}/podcasts-list.txt |\ while read -r LINE; do URL=${LINE##* } TITLE=${LINE% *} echo "Downloading ${TITLE}..." git annex importfeed \ --template="${POD_SUB_DIR}/\${feedtitle}/\${itempubdate}-\${itemtitle}\${extension}" \ "${URL}" echo done git annex add ${POD_SUB_DIR} git commit -m "Caught podcasts" git annex find --include='Podcasts/*' --and --not --metadata tag=listened |\ xargs git annex metadata --tag unlistened mpc update cd $CUR_DIR exit ;; wanted) find_unlistened --not --in=here exit ;; *) show_usage echo echo "Subcommand $CMD is not valid." >&2 exit 1 ;; esac