add autoplay flag for continue watching prompt after each episode

This commit is contained in:
ksyasuda 2022-06-04 02:05:37 -07:00
parent 692301d893
commit 1b797bee3e
2 changed files with 114 additions and 71 deletions

159
ani-cli
View File

@ -754,6 +754,21 @@ episode_selection() {
fi fi
} }
continue_watching() {
if ((IS_ROFI == 1)); then
choice=$(rofi -dmenu -dpi "$DPI" -config "$ROFI_CFG" \
-theme-str 'listview {columns: 1;} window {width: 25%;}' \
-i -l 2 -no-custom -sep '|' -a 0 -mesg "$(generate_span "Next episode: $((episode + 1))")" \
-p "Continue watching $selection_id?:" -window-title 'aniwrapper' <<< "Yes|No")
else
inf "Continue watching $selection_id?"
prompt "Next episode -> $((episode + 1)) [y/n]"
read -r choice
fi
[[ "$choice" =~ ^(y|Y|Yes)$ ]] && return 0 || return 1
}
open_episode() { open_episode() {
anime_id="$1" anime_id="$1"
episode="$2" episode="$2"
@ -792,6 +807,14 @@ open_episode() {
else else
((SILENT != 1)) && inf "Playing $anime_id - Episode $episode" ((SILENT != 1)) && inf "Playing $anime_id - Episode $episode"
fi fi
if ((is_autoplay == 1)); then
wait "$PID"
if continue_watching; then
open_episode "$anime_id" "$((episode + 1))" "$ddir"
else
exit 0
fi
fi
else else
lg "Downloading episode $episode ..." lg "Downloading episode $episode ..."
dl_dir="${ddir// /}/$anime_id" dl_dir="${ddir// /}/$anime_id"
@ -851,8 +874,12 @@ parse_args() {
quality=best quality=best
is_download=0 is_download=0
is_resume=0 is_resume=0
while getopts 'd:Hsvq:cf:t:T:CQ:D:Sp:r' OPT; do is_autoplay=0
while getopts 'ad:Hsvq:cf:t:T:CQ:D:Sp:r' OPT; do
case "$OPT" in case "$OPT" in
a)
is_autoplay=1
;;
d) d)
is_download=1 is_download=1
download_dir="$OPTARG" download_dir="$OPTARG"
@ -936,6 +963,71 @@ parse_args() {
done done
} }
show_menu() {
if ((SILENT != 1)); then
episode=${ep_choice_end:-$ep_choice_start}
choice=''
while :; do
inf "Currently playing $selection_id episode" "${episode// /}/$LAST_EP_NUMBER"
((episode != LAST_EP_NUMBER)) && menu_line_alternate "next episode" "n"
((episode != FIRST_EP_NUMBER)) && menu_line_alternate "previous episode" "p"
((FIRST_EP_NUMBER != LAST_EP_NUMBER)) && menu_line_alternate "select episode" "s"
menu_line_alternate "replay current episode" "r"
menu_line_alternate "search for another anime" "a"
menu_line_alternate "download current episode" "d"
menu_line_alternate "download current episode (with quality selection)" "D"
menu_line_alternate "select video quality (current: $quality)" "Q"
menu_line_strong "exit" "q"
prompt "Enter choice"
read -r choice
case $choice in
n)
episode=$((episode + 1))
;;
p)
episode=$((episode - 1))
;;
s)
episode_selection
episode=$ep_choice_start
;;
r)
episode=$((episode))
;;
a)
stream
episode=$ep_choice_start
lg "NEW EPISODE: $selection_id - $episode"
;;
Q)
set_video_quality
episode=$((episode))
;;
d)
get_dl_dir
is_download=1
;;
D)
get_dl_dir
set_video_quality
is_download=1
;;
q)
break
;;
*)
die "invalid choice"
;;
esac
open_episode "$selection_id" "$episode" "$download_dir"
done
fi
}
main() { main() {
case $scrape in case $scrape in
query) query)
@ -1012,72 +1104,13 @@ main() {
open_episode "$selection_id" "$ep" "$download_dir" open_episode "$selection_id" "$ep" "$download_dir"
done done
if [[ "$is_download" -eq 1 ]]; then if ((is_download == 1)); then
lg "Finished downloading episodes: $episodes for $selection_id... exiting" lg "Finished downloading episodes: $episodes for $selection_id... exiting"
exit 0 exit 0
fi fi
if ((SILENT != 1)); then if ((is_autoplay == 0)); then
episode=${ep_choice_end:-$ep_choice_start} show_menu
choice=''
while :; do
inf "Currently playing $selection_id episode" "${episode// /}/$LAST_EP_NUMBER"
((episode != LAST_EP_NUMBER)) && menu_line_alternate "next episode" "n"
((episode != FIRST_EP_NUMBER)) && menu_line_alternate "previous episode" "p"
((FIRST_EP_NUMBER != LAST_EP_NUMBER)) && menu_line_alternate "select episode" "s"
menu_line_alternate "replay current episode" "r"
menu_line_alternate "search for another anime" "a"
menu_line_alternate "download current episode" "d"
menu_line_alternate "download current episode (with quality selection)" "D"
menu_line_alternate "select video quality (current: $quality)" "Q"
menu_line_strong "exit" "q"
prompt "Enter choice"
read -r choice
case $choice in
n)
episode=$((episode + 1))
;;
p)
episode=$((episode - 1))
;;
s)
episode_selection
episode=$ep_choice_start
;;
r)
episode=$((episode))
;;
a)
stream
episode=$ep_choice_start
lg "NEW EPISODE: $selection_id - $episode"
;;
Q)
set_video_quality
episode=$((episode))
;;
d)
get_dl_dir
is_download=1
;;
D)
get_dl_dir
set_video_quality
is_download=1
;;
q)
break
;;
*)
die "invalid choice"
;;
esac
open_episode "$selection_id" "$episode" "$download_dir"
done
fi fi
} }

View File

@ -16,6 +16,7 @@ SUPPORTED_PLAYERS="mpv|vlc"
QUALITY=best QUALITY=best
PLAYER_FN=mpv PLAYER_FN=mpv
DPI=96 DPI=96
IS_AUTOPLAY=0
GET_QUALITY=0 GET_QUALITY=0
IS_CUSTOM_THEME=0 IS_CUSTOM_THEME=0
IS_DOWNLOAD=0 IS_DOWNLOAD=0
@ -87,23 +88,26 @@ run() {
if ((IS_PLAY_FROM_FILE == 0 && IS_SYNC == 0 && GET_QUALITY == 1)); then if ((IS_PLAY_FROM_FILE == 0 && IS_SYNC == 0 && GET_QUALITY == 1)); then
get_quality get_quality
fi fi
if ((IS_AUTOPLAY)); then
CMD="$CMD -a"
fi
if ((SILENT == 1)); then if ((SILENT == 1)); then
if ((IS_CUSTOM_THEME == 0)); then if ((IS_CUSTOM_THEME == 0)); then
"$CMD" -D"$DPI" -Sq "$QUALITY" -t "$theme" -p "$PLAYER_FN" "$@" $CMD -D"$DPI" -Sq "$QUALITY" -t "$theme" -p "$PLAYER_FN" "$@"
else else
"$CMD" -D"$DPI" -Sq "$QUALITY" -T "$CFG_FILE" -p "$PLAYER_FN" "$@" $CMD -D"$DPI" -Sq "$QUALITY" -T "$CFG_FILE" -p "$PLAYER_FN" "$@"
fi fi
elif ((VERBOSE == 1)); then elif ((VERBOSE == 1)); then
if ((IS_CUSTOM_THEME == 0)); then if ((IS_CUSTOM_THEME == 0)); then
"$CMD" -D"$DPI" -vq "$QUALITY" -t "$theme" -p "$PLAYER_FN" "$@" $CMD -D"$DPI" -vq "$QUALITY" -t "$theme" -p "$PLAYER_FN" "$@"
else else
"$CMD" -D"$DPI" -vq "$QUALITY" -T "$CFG_FILE" -p "$PLAYER_FN" "$@" $CMD -D"$DPI" -vq "$QUALITY" -T "$CFG_FILE" -p "$PLAYER_FN" "$@"
fi fi
else else
if ((IS_CUSTOM_THEME == 0)); then if ((IS_CUSTOM_THEME == 0)); then
"$CMD" -D"$DPI" -q "$QUALITY" -t "$theme" -p "$PLAYER_FN" "$@" $CMD -D"$DPI" -q "$QUALITY" -t "$theme" -p "$PLAYER_FN" "$@"
else else
"$CMD" -D"$DPI" -q "$QUALITY" -T "$CFG_FILE" -p "$PLAYER_FN" "$@" $CMD -D"$DPI" -q "$QUALITY" -T "$CFG_FILE" -p "$PLAYER_FN" "$@"
fi fi
fi fi
} }
@ -168,8 +172,11 @@ set_theme() {
} }
parse_args() { parse_args() {
while getopts 'cCdD:f:hpqQ:rSt:T:v' OPT; do while getopts 'acCdD:f:hpqQ:rSt:T:v' OPT; do
case "$OPT" in case "$OPT" in
a)
IS_AUTOPLAY=1
;;
c) c)
IS_ROFI=0 IS_ROFI=0
lg "Command-line (ani-cli) mode set" lg "Command-line (ani-cli) mode set"
@ -267,6 +274,9 @@ check_flags() {
if ((VERBOSE == 1 && SILENT == 1)); then if ((VERBOSE == 1 && SILENT == 1)); then
die "verbose and silent options cannot be used together" die "verbose and silent options cannot be used together"
fi fi
if ((IS_DOWNLOAD == 1 && IS_AUTOPLAY == 1)); then
die "autoplay and download options cannot be used together"
fi
if ((IS_DOWNLOAD == 0 && IS_ALTERNATE_PLAYER == 1)); then if ((IS_DOWNLOAD == 0 && IS_ALTERNATE_PLAYER == 1)); then
get_player get_player
lg "SELECTED PLAYER FN -> $PLAYER_FN" lg "SELECTED PLAYER FN -> $PLAYER_FN"
@ -347,7 +357,7 @@ main() {
span=$(printf '%s\n%s\n' "$(generate_span "Provide a path to a valid directory, or choose from the list below")" "$(generate_span "The program will begin searching for media files from the supplied directory")") span=$(printf '%s\n%s\n' "$(generate_span "Provide a path to a valid directory, or choose from the list below")" "$(generate_span "The program will begin searching for media files from the supplied directory")")
play_dir=$( play_dir=$(
rofi -dpi "$DPI" -dmenu -config "$CFG_FILE" \ rofi -dpi "$DPI" -dmenu -config "$CFG_FILE" \
-l 12 -mesg "$span" -p "Enter path to starting directory:" \ -i -l 12 -mesg "$span" -p "Enter path to starting directory:" \
-async-pre-read 24 -matching 'fuzzy' -window-title 'aniwrapper' \ -async-pre-read 24 -matching 'fuzzy' -window-title 'aniwrapper' \
-sort -sorting-method fzf \ -sort -sorting-method fzf \
< <(sqlite3 -noheader -list "$CFG_DIR/history.sqlite3" <<< "SELECT directory FROM file_history WHERE filename = 'DIRECTORY' ORDER BY WATCH_DATE DESC;") < <(sqlite3 -noheader -list "$CFG_DIR/history.sqlite3" <<< "SELECT directory FROM file_history WHERE filename = 'DIRECTORY' ORDER BY WATCH_DATE DESC;")