mirror of
https://github.com/ksyasuda/aniwrapper.git
synced 2024-10-28 04:44:11 -07:00
add autoplay flag for continue watching prompt after each episode
This commit is contained in:
parent
692301d893
commit
1b797bee3e
159
ani-cli
159
ani-cli
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
26
aniwrapper
26
aniwrapper
@ -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;")
|
||||||
|
Loading…
Reference in New Issue
Block a user