@@ -321,14 +321,39 @@ search_anime() {
321321time_until_next_ep () {
322322 animeschedule=" https://animeschedule.net"
323323 query=" $( printf " %s\n" " $* " | tr ' ' ' +' ) "
324- curl -s -G " $animeschedule /api/v3/anime" --data " q=${query} " | sed ' s|"id"|\n|g' | sed -nE ' s|.*,"route":"([^"]*)","premier.*|\1|p' | while read -r anime; do
325- data=$( curl -s " $animeschedule /anime/$anime " | sed ' 1,/"anime-header-list-buttons-wrapper"/d' | sed -nE ' s|.*countdown-time-raw" datetime="([^"]*)">.*|Next Raw Release: \1|p;s|.*countdown-time" datetime="([^"]*)">.*|Next Sub Release: \1|p;s|.*english-title">([^<]*)<.*|English Title: \1|p;s|.*main-title".*>([^<]*)<.*|Japanese Title: \1|p' )
326- status=" Ongoing"
327- color=" 33"
328- printf " %s\n" " $data "
329- ! (printf " %s\n" " $data " | grep -q " Next Raw Release:" ) && status=" Finished" && color=" 32"
330- printf " Status: \033[1;%sm%s\033[0m\n---\n" " $color " " $status "
331- done
324+
325+ curl -s -G " $animeschedule /api/v3/anime" --data " q=${query} " \
326+ | sed ' s|"id"|\n|g' \
327+ | sed -nE ' s|.*,"route":"([^"]*)","premier.*|\1|p' \
328+ | {
329+ found=0
330+
331+ while read -r anime; do
332+ data=$( curl -s " $animeschedule /anime/$anime " \
333+ | sed ' 1,/"anime-header-list-buttons-wrapper"/d' \
334+ | sed -nE '
335+ s|.*countdown-time-raw" datetime="([^"]*)">.*|Next Raw Release: \1|p;
336+ s|.*countdown-time" datetime="([^"]*)">.*|Next Sub Release: \1|p;
337+ s|.*english-title">([^<]*)<.*|English Title: \1|p;
338+ s|.*main-title".*>([^<]*)<.*|Japanese Title: \1|p
339+ ' )
340+
341+ if printf " %s\n" " $data " | grep -q " Next Sub Release:" ; then
342+ printf " %s\n" " $data "
343+ printf " Status: \033[1;33mOngoing\033[0m\n---\n"
344+ found=1
345+ break
346+ fi
347+
348+ if [ " $found " -eq 0 ]; then
349+ printf " %s\n" " $data "
350+ printf " Status: \033[1;32mFinished/Unknown\033[0m\n---\n"
351+ found=1
352+ break
353+ fi
354+ done
355+ }
356+
332357 exit 0
333358}
334359
@@ -346,9 +371,14 @@ episodes_list() {
346371process_hist_entry () {
347372 ep_list=$( episodes_list " $id " )
348373 latest_ep=$( printf " %s\n" " $ep_list " | tail -n1)
374+ # Update episode count in title
349375 title=$( printf " %s\n" " $title " | sed " s|[0-9]\+ episodes|${latest_ep} episodes|" )
350- ep_no=$( printf " %s" " $ep_list " | sed -n " /^${ep_no} $/{n;p;}" ) 2> /dev/null
351- [ -n " $ep_no " ] && printf " %s\t%s - episode %s\n" " $id " " $title " " $ep_no "
376+ next_ep=$( printf " %s" " $ep_list " | sed -n " /^${ep_no} $/{n;p;}" )
377+ if [ -n " $next_ep " ]; then
378+ printf " %s\t%s - episode %s\n" " $id " " $title " " $next_ep "
379+ else
380+ printf " %s\t%s - no new episode\n" " $id " " $title "
381+ fi
352382}
353383
354384update_history () {
@@ -387,10 +417,6 @@ play_episode() {
387417 [ -z " $episode " ] && get_episode_url
388418 # shellcheck disable=SC2086
389419 case " $player_function " in
390- debug)
391- printf " All links:\n%s\nSelected link:\n" " $links "
392- printf " %s\n" " $episode "
393- ;;
394420 mpv* )
395421 if [ " $no_detach " = 0 ]; then
396422 nohup $player_function $skip_flag --force-media-title=" ${allanime_title} Episode ${ep_no} " " $episode " $subs_flag $refr_flag > /dev/null 2>&1 &
@@ -583,16 +609,33 @@ esac
583609
584610# searching
585611case " $search " in
586- history)
587- anime_list=$( while read -r ep_no id title; do process_hist_entry & done < " $histfile " )
588- wait
612+ history)
613+ anime_list=$( while read -r ep_no id title; do
614+ process_hist_entry
615+ done < " $histfile " )
589616 [ -z " $anime_list " ] && die " No unwatched series in history!"
617+
618+ # selection
590619 [ -z " ${index##* [!0-9]* } " ] && id=$( printf " %s" " $anime_list " | nl -w 2 | sed ' s/^[[:space:]]//' | nth " Select anime: " | cut -f1)
591620 [ -z " ${index##* [!0-9]* } " ] || id=$( printf " %s" " $anime_list " | sed -n " ${index} p" | cut -f1)
621+
592622 [ -z " $id " ] && exit 1
593- title=$( printf " %s" " $anime_list " | grep " $id " | cut -f2 | sed ' s/ - episode.*//' )
623+ # get original entry from history file (correct source of truth)
624+ hist_entry=$( awk -F ' \t' -v id=" $id " ' $2 == id {print; exit}' " $histfile " )
625+
626+ title=$( printf " %s" " $hist_entry " | cut -f3)
627+ ep_no=$( printf " %s" " $hist_entry " | cut -f1)
628+
594629 ep_list=$( episodes_list " $id " )
595- ep_no=$( printf " %s" " $anime_list " | grep " $id " | cut -f2 | sed -nE ' s/.*- episode (.+)$/\1/p' )
630+ next_ep=$( printf " %s" " $ep_list " | sed -n " /^${ep_no} $/{n;p;}" )
631+ if [ " $search " = " history" ] && [ -z " $next_ep " ]; then
632+ echo " "
633+ echo " Checking next episode for: $title "
634+ echo " -------------------------------------"
635+ time_until_next_ep " $title "
636+ exit 0
637+ fi
638+
596639 allanime_title=" $( printf " %s" " $title " | cut -d' (' -f1 | tr -d ' [:punct:]' ) "
597640 ;;
598641 * )
0 commit comments