Compare commits

..

2 Commits

Author SHA1 Message Date
ksyasuda
a726b9d550 improvements 2022-02-03 00:40:59 -08:00
ksyasuda
f882f7d3d2 improve anime_selection menu performance 2022-02-03 00:34:50 -08:00

58
ani-cli
View File

@ -480,36 +480,26 @@ anime_selection() {
# Select anime from query results
search_results=$*
if [ "$IS_ROFI" -eq 1 ]; then
count=1
menu=()
res=()
searched=""
cnt=0
# generate inputlist for rofi and indexes of previously searched anime
while read -r anime_id; do
menu+="$count. $anime_id\n"
idx=$((count - 1))
res["$idx"]="$anime_id"
count=$((count + 1))
menu+="$((cnt + 1)). $anime_id\n"
res["$cnt"]="$anime_id"
lg "ANIME: $anime_id"
if ! check_db "$anime_id" "search"; then
lg "$anime_id HAS BEEN SEARCHED BEFORE"
[ -z "$searched" ] && searched="$cnt" || searched="$searched, $cnt"
fi
((++cnt))
done <<- EOF
$search_results
EOF
menu+="$count. Quit"
menu+="$((++cnt)). Quit"
searched=""
cnt=0
# Get the comma separated list of indexes of anime that has been searched before
for anime in "${res[@]}"; do
lg "ANIME: $anime"
check_db "$anime" "search"
if [[ $? -gt 0 ]]; then
lg "$anime HAS BEEN SEARCHED BEFORE"
if [ -z "$searched" ]; then
searched="$cnt"
else
searched="$searched, $cnt"
fi
fi
((++cnt))
done
lg "SEARCHED: $searched"
lg "searched indexes: $searched"
# get the anime from indexed list
msg="$(generate_span "Query: $query")"
@ -551,12 +541,6 @@ anime_selection() {
lg "CHOICE: $choice"
if [ "$IS_ROFI" -eq 1 ]; then
# check both choice and name are set
if [[ ! "$choice" ]] || [[ ! "$name" ]]; then
die "Invalid choice... committing seppuku"
fi
fi
# Check if input is a number
[ "$choice" -eq "$choice" ] 2> /dev/null || die "Invalid number entered"
@ -572,13 +556,12 @@ anime_selection() {
$search_results
EOF
[ -z "$name" ] && name="$anime_id"
insert_history "$name" "search" &
printf "$c_reset"
[ -z "$name" ] && name="$anime_id"
[ -z "$selection_id" ] && die "Invalid number entered"
insert_history "$name" "search" &
read -r last_ep_number <<- EOF
$(search_eps "$selection_id")
EOF
@ -592,17 +575,19 @@ episode_selection() {
stmt="SELECT DISTINCT episode_number \
FROM watch_history \
WHERE anime_name = '$anime_id';"
hist=$(run_stmt "$stmt")
# hist=$(run_stmt "$stmt")
# Get Watch History for $anime_id as comma separated list
watch_history=""
for i in $hist; do
# for i in $hist; do
while read -r i; do
if [[ "$watch_history" == "" ]]; then
watch_history="$((--i))"
else
watch_history="$watch_history, $((--i))"
fi
done
done < <(run_stmt "$stmt")
lg "Episode watch history -> $watch_history"
# get user choice and set the start and end
msg=$(printf "%s\n%s" "$(generate_span "Anime Name: $anime_id")" "$(generate_span "Range of episodes can be provided as: START_EPISODE - END_EPISODE")")
@ -641,7 +626,6 @@ episode_selection() {
ep_choice_end=""
fi
printf "$c_reset"
}
open_episode() {