Merge branch 'master' of github.com:ksyasuda/aniwrapper

This commit is contained in:
ksyasuda 2022-01-31 03:23:26 -08:00
commit 86f5da5976
4 changed files with 109 additions and 85 deletions

View File

@ -20,7 +20,4 @@ ifneq ("$(wildcard $(DESTDIR)$(PREFIX)/bin/aniwrapper)","")
$(RM) $(DESTDIR)$(PREFIX)/bin/aniwrapper $(RM) $(DESTDIR)$(PREFIX)/bin/aniwrapper
endif endif
reinstall: uninstall install .PHONY: all install uninstall dev
.PHONY: all install uninstall dev reinstall

View File

@ -146,7 +146,7 @@ In this program, rofi is configured to search with case insensitivity and select
Once your history starts filling up, it becomes progressively more difficult to form unique search queries Once your history starts filling up, it becomes progressively more difficult to form unique search queries
![selection with dash](https://imgur.com/vSyaoG6.png) ![selection with dash](https://imgur.com/vSyaoG6.png)
The workaround for this is to prepend a dash ` -` to the search query<br/> The workaround for this is to append a dash ` -` to the end of the search query<br/>
The above output was produced by searching: `isekai -` The above output was produced by searching: `isekai -`
</div> </div>
@ -189,6 +189,9 @@ aniwrapper -v
# Connect to history database # Connect to history database
aniwrapper -C aniwrapper -C
# Enable silent mode (suppress output to stdout) [cannot be used with -v]
aniwrapper -S
# Query the history database # Query the history database
aniwrapper -Q <query> aniwrapper -Q <query>

131
ani-cli
View File

@ -10,6 +10,7 @@ ANIWRAPPER_ICON_PATH="$CFG_DIR/icons/icon-64.png"
MAISAN_ICON_PATH="$CFG_DIR/icons/MYsan.png" MAISAN_ICON_PATH="$CFG_DIR/icons/MYsan.png"
DPI=96 DPI=96
VERBOSE=0 VERBOSE=0
SILENT=0
player_fn="mpv" player_fn="mpv"
playable="\.mp4|\.mkv|\.ts|\.mp3|\.webm" playable="\.mp4|\.mkv|\.ts|\.mp3|\.webm"
@ -34,17 +35,17 @@ help_text() {
} }
die() { die() {
printf "$c_red%s$c_reset\n" "$*" >&2 ((SILENT != 1)) && printf "$c_red%s$c_reset\n" "$*" >&2
exit 1 exit 1
} }
err() { err() {
printf "$c_red%s$c_reset\n" "$*" >&2 ((SILENT != 1)) && printf "$c_red%s$c_reset\n" "$*" >&2
} }
# prints passed in args to stdout if $VERBOSE is set to 1
lg() { lg() {
# prints passed in args to stdout if $VERBOSE is set to 1 ((VERBOSE == 1)) && printf "%s\n" "$*" >&2
[ "$VERBOSE" -eq 1 ] && printf "%s\n" "$*" >&2
} }
check_input() { check_input() {
@ -679,7 +680,7 @@ open_episode() {
if command -v "notify-send" > /dev/null; then if command -v "notify-send" > /dev/null; then
notify-send -i "$ANIWRAPPER_ICON_PATH" "Playing $anime_id - Episode $episode" notify-send -i "$ANIWRAPPER_ICON_PATH" "Playing $anime_id - Episode $episode"
else else
printf "${c_green}\nVideo playing" ((SILENT != 1)) && printf "${c_green}\nVideo playing"
fi fi
else else
lg "Downloading episode $episode ..." lg "Downloading episode $episode ..."
@ -696,9 +697,9 @@ open_episode() {
fi fi
else else
if aria2c -x 16 -s 16 --referer="$dpage_link" "$video_url" --dir="$dl_dir" -o "$episode.mp4" --download-result=hide; then if aria2c -x 16 -s 16 --referer="$dpage_link" "$video_url" --dir="$dl_dir" -o "$episode.mp4" --download-result=hide; then
printf "${c_green}Downloaded complete for %s - Episode: %s${c_reset}\n" "${anime_id//-/ }" "$episode" ((SILENT != 1)) && printf "${c_green}Downloaded complete for %s - Episode: %s${c_reset}\n" "${anime_id//-/ }" "$episode"
else else
printf "${c_red}Download failed for %s - Episode: %s, please retry or check your internet connection${c_reset}\n" "${anime_id//-/ }" "$episode" ((SILENT != 1)) && printf "${c_red}Download failed for %s - Episode: %s, please retry or check your internet connection${c_reset}\n" "${anime_id//-/ }" "$episode"
fi fi
fi fi
} }
@ -744,7 +745,7 @@ parse_args() {
is_download=0 is_download=0
download_dir="." download_dir="."
half_ep=0 half_ep=0
while getopts 'hd:Hsvq:cf:t:T:CQ:D:' OPT; do while getopts 'hd:Hsvq:cf:t:T:CQ:D:S' OPT; do
case "$OPT" in case "$OPT" in
h) h)
help_text help_text
@ -833,6 +834,9 @@ parse_args() {
D) D)
DPI="$OPTARG" DPI="$OPTARG"
;; ;;
S)
SILENT=1
;;
*) *)
printf "%s\n" "Invalid option" printf "%s\n" "Invalid option"
exit 1 exit 1
@ -930,66 +934,67 @@ main() {
exit 0 exit 0
fi fi
episode=${ep_choice_end:-$ep_choice_start} if ((SILENT != 1)); then
episode=${ep_choice_end:-$ep_choice_start}
choice=''
while :; do
printf "\n${c_green}Currently playing %s episode ${c_cyan}%d/%d\n" "$selection_id" $episode $last_ep_number
if [ "$episode" -ne "$last_ep_number" ]; then
printf "$c_blue[${c_cyan}%s$c_blue] $c_yellow%s$c_reset\n" "n" "next episode"
fi
if [ "$episode" -ne "1" ]; then
printf "$c_blue[${c_cyan}%s$c_blue] $c_magenta%s$c_reset\n" "p" "previous episode"
fi
if [ "$last_ep_number" -ne "1" ]; then
printf "$c_blue[${c_cyan}%s$c_blue] $c_yellow%s$c_reset\n" "s" "select episode"
fi
printf "$c_blue[${c_cyan}%s$c_blue] $c_magenta%s$c_reset\n" "r" "replay current episode"
printf "$c_blue[${c_cyan}%s$c_blue] $c_yellow%s$c_reset\n" "a" "search for another anime"
# printf "$c_blue[${c_cyan}%s$c_blue] $c_magenta%s$c_reset\n" "h" "search history"
printf "$c_blue[${c_cyan}%s$c_blue] $c_red%s$c_reset\n" "q" "exit"
printf "${c_blue}Enter choice:${c_green} "
read -r choice
choice='' printf "$c_reset"
while :; do case $choice in
printf "\n${c_green}Currently playing %s episode ${c_cyan}%d/%d\n" "$selection_id" $episode $last_ep_number n)
if [ "$episode" -ne "$last_ep_number" ]; then episode=$((episode + 1))
printf "$c_blue[${c_cyan}%s$c_blue] $c_yellow%s$c_reset\n" "n" "next episode" ;;
fi p)
if [ "$episode" -ne "1" ]; then episode=$((episode - 1))
printf "$c_blue[${c_cyan}%s$c_blue] $c_magenta%s$c_reset\n" "p" "previous episode" ;;
fi
if [ "$last_ep_number" -ne "1" ]; then
printf "$c_blue[${c_cyan}%s$c_blue] $c_yellow%s$c_reset\n" "s" "select episode"
fi
printf "$c_blue[${c_cyan}%s$c_blue] $c_magenta%s$c_reset\n" "r" "replay current episode"
printf "$c_blue[${c_cyan}%s$c_blue] $c_yellow%s$c_reset\n" "a" "search for another anime"
# printf "$c_blue[${c_cyan}%s$c_blue] $c_magenta%s$c_reset\n" "h" "search history"
printf "$c_blue[${c_cyan}%s$c_blue] $c_red%s$c_reset\n" "q" "exit"
printf "${c_blue}Enter choice:${c_green} "
read -r choice
printf "$c_reset" s)
case $choice in printf "${c_blue}Choose episode $c_cyan[1-%d]$c_reset:$c_green " "$last_ep_number"
n) read -r episode
episode=$((episode + 1)) if [ "$(echo "$episode" | cut -c1-1)" = "h" ]; then
;; half_ep=1
p) episode=$(echo "$episode" | cut -c2-)
episode=$((episode - 1)) fi
;; printf "$c_reset"
[ "$episode" -eq "$episode" ] 2> /dev/null || die "Invalid number entered"
;;
s) r)
printf "${c_blue}Choose episode $c_cyan[1-%d]$c_reset:$c_green " "$last_ep_number" episode=$((episode))
read -r episode ;;
if [ "$(echo "$episode" | cut -c1-1)" = "h" ]; then a)
half_ep=1 stream
episode=$(echo "$episode" | cut -c2-) episode=$ep_choice_start
fi lg "NEW EPISODE: $selection_id - $episode"
printf "$c_reset" ;;
[ "$episode" -eq "$episode" ] 2> /dev/null || die "Invalid number entered"
;;
r) q)
episode=$((episode)) break
;; ;;
a)
stream
episode=$ep_choice_start
lg "NEW EPISODE: $selection_id - $episode"
;;
q) *)
break die "invalid choice"
;; ;;
esac
*) open_episode "$selection_id" "$episode" "$download_dir"
die "invalid choice" done
;; fi
esac
open_episode "$selection_id" "$episode" "$download_dir"
done
} }
dep_ch "$player_fn" "curl" "sed" "grep" "sqlite3" "rofi" "git" "aria2c" dep_ch "$player_fn" "curl" "sed" "grep" "sqlite3" "rofi" "git" "aria2c"

View File

@ -20,6 +20,7 @@ IS_DOWNLOAD=0
IS_PLAY_FROM_FILE=0 IS_PLAY_FROM_FILE=0
IS_ROFI=1 IS_ROFI=1
VERBOSE=0 VERBOSE=0
SILENT=0
quit="6. Quit" quit="6. Quit"
options="1. Stream|2. Download|3. Continue|4. Play from File|5. Sync History|$quit" options="1. Stream|2. Download|3. Continue|4. Play from File|5. Sync History|$quit"
@ -33,8 +34,8 @@ help_text() {
printf "%s\n" "$line" printf "%s\n" "$line"
done <<< " done <<< "
Usage: Usage:
aniwrapper [-cdhvq] [-t <theme> or -T <config_path>] aniwrapper [-cdhvqS] [-t <theme> or -T <config_path>]
aniwrapper [-cv] [-t <theme> or -T <config_path>] -f <path_to_directory> aniwrapper [-cvS] [-t <theme> or -T <config_path>] -f <path_to_directory>
aniwrapper -Q <query> aniwrapper -Q <query>
aniwrapper -C aniwrapper -C
Options: Options:
@ -43,6 +44,7 @@ Options:
-c enable command-line mode (rofi disabled) -c enable command-line mode (rofi disabled)
-d download episode in command-line mode -d download episode in command-line mode
-C connect to history database -C connect to history database
-S silent mode (suppress output to stdout) [cannot be used with -v]
-t <aniwrapper (default)|dracula|doomone|fancy|flamingo|material|onedark> change rofi theme -t <aniwrapper (default)|dracula|doomone|fancy|flamingo|material|onedark> change rofi theme
-T <config_path> specify custom rofi theme -T <config_path> specify custom rofi theme
@ -52,7 +54,7 @@ Options:
} }
lg() { lg() {
if [[ "$VERBOSE" -eq 1 ]]; then if ((VERBOSE == 1)); then
printf "%s\n" "$*" printf "%s\n" "$*"
fi fi
} }
@ -68,22 +70,33 @@ quit() {
} }
run() { run() {
if [[ "$IS_PLAY_FROM_FILE" -eq 0 ]] && [[ "$GET_QUALITY" -eq 1 ]]; then if ((IS_PLAY_FROM_FILE == 0 && GET_QUALITY == 1)); then
get_quality get_quality
fi fi
if [[ "$IS_CUSTOM_THEME" -eq 1 ]] && [[ "$VERBOSE" -eq 0 ]]; then
"$CMD" -D"$DPI" -q "$QUALITY" -T "$CFG_FILE" "$@" if ((SILENT == 1)); then
elif [[ "$IS_CUSTOM_THEME" -eq 1 ]] && [[ "$VERBOSE" -eq 1 ]]; then if ((IS_CUSTOM_THEME == 0)); then
"$CMD" -D"$DPI" -vq "$QUALITY" -T "$CFG_FILE" "$@" "$CMD" -D"$DPI" -Sq "$QUALITY" -t "$theme" "$@"
elif [[ "$VERBOSE" -eq 0 ]]; then else
"$CMD" -D"$DPI" -q "$QUALITY" -t "$theme" "$@" "$CMD" -D"$DPI" -Sq "$QUALITY" -T "$CFG_FILE" "$@"
fi
elif ((VERBOSE == 1)); then
if ((IS_CUSTOM_THEME == 0)); then
"$CMD" -D"$DPI" -vq "$QUALITY" -t "$theme" "$@"
else
"$CMD" -D"$DPI" -vq "$QUALITY" -T "$CFG_FILE" "$@"
fi
else else
"$CMD" -D"$DPI" -vq "$QUALITY" -t "$theme" "$@" if ((IS_CUSTOM_THEME == 0)); then
"$CMD" -D"$DPI" -q "$QUALITY" -t "$theme" "$@"
else
"$CMD" -D"$DPI" -q "$QUALITY" -T "$CFG_FILE" "$@"
fi
fi fi
} }
get_quality() { get_quality() {
if [ "$IS_ROFI" -eq 1 ]; then if ((IS_ROFI == 1)); then
selection=$(rofi -dpi "$DPI" -dmenu -config "$CFG_FILE" \ selection=$(rofi -dpi "$DPI" -dmenu -config "$CFG_FILE" \
-l 5 -selected-row 0 \ -l 5 -selected-row 0 \
-theme-str 'listview {columns: 1;}' -p "Choose video quality:" \ -theme-str 'listview {columns: 1;}' -p "Choose video quality:" \
@ -105,7 +118,7 @@ generate_span() {
} }
parse_args() { parse_args() {
while getopts 'vhqcdf:-:t:T:CQ:D:' OPT; do while getopts 'vhqcdf:-:t:T:CQ:D:S' OPT; do
case "$OPT" in case "$OPT" in
h) h)
help_text help_text
@ -186,6 +199,9 @@ parse_args() {
D) D)
DPI="$OPTARG" DPI="$OPTARG"
;; ;;
S)
SILENT=1
;;
*) *)
help_text help_text
exit 1 exit 1
@ -197,10 +213,13 @@ parse_args() {
check_flags() { check_flags() {
# Check if command-line flag is set # Check if command-line flag is set
if [[ "$IS_ROFI" -eq 0 ]] && [[ "$IS_DOWNLOAD" -eq 0 ]]; then if ((VERBOSE == 1 && SILENT == 1)); then
seppuku "verbose and silent options cannot be used together"
fi
if ((IS_ROFI == 0 && IS_DOWNLOAD == 0)); then
run -c run -c
exit $? exit $?
elif [[ "$IS_ROFI" -eq 0 ]] && [[ "$IS_DOWNLOAD" -eq 1 ]]; then elif ((IS_ROFI == 0 && IS_DOWNLOAD == 1)); then
printf "%s" "Enter download dir: " printf "%s" "Enter download dir: "
read -r dl_dir read -r dl_dir
lg "Download dir: $dl_dir" lg "Download dir: $dl_dir"
@ -209,10 +228,10 @@ check_flags() {
fi fi
run "-cd $dl_dir" run "-cd $dl_dir"
exit $? exit $?
elif [[ "$IS_ROFI" -eq 1 ]] && [[ "$IS_PLAY_FROM_FILE" -eq 1 ]] && [[ "$IS_CUSTOM_THEME" -eq 1 ]]; then elif ((IS_ROFI == 1 && IS_PLAY_FROM_FILE == 1 && IS_CUSTOM_THEME == 1)); then
run "-f$play_path" -T "$CFG_FILE" run "-f$play_path" -T "$CFG_FILE"
exit $? exit $?
elif [[ "$IS_ROFI" -eq 1 ]] && [[ "$IS_PLAY_FROM_FILE" -eq 1 ]] && [[ "$IS_CUSTOM_THEME" -eq 0 ]]; then elif ((IS_ROFI == 1 && IS_PLAY_FROM_FILE == 1 && IS_CUSTOM_THEME == 0)); then
run "-f$play_path" -t "$theme" run "-f$play_path" -t "$theme"
exit $? exit $?
fi fi