X-Git-Url: http://dolda2000.com/gitweb/?p=utils.git;a=blobdiff_plain;f=autodlctl;h=134fb8dbf03363cc3bbf6cd46b532783a4a9483b;hp=3f390cec8a16868f09157c49c7409c4b8dce51c6;hb=refs%2Fheads%2Fmaster;hpb=3bf0176fab726b379e83c56dd6e2a5c22e5f52d6 diff --git a/autodlctl b/autodlctl index 3f390ce..134fb8d 100755 --- a/autodlctl +++ b/autodlctl @@ -2,6 +2,27 @@ paths=(/home/pub/video/anime $HOME/dc/autodl/cur) +function findcurep +{ + if [ -r badlist ]; then + echo badlist `head -n 1 badlist` + return 0 + fi + if [ -r curep ]; then + if [ -r maxep ]; then + if [ "`cat curep`" -le "`cat maxep`" ]; then + echo curep `cat curep` + return 0 + fi + else + echo curep `cat curep` + return 0 + fi + fi + echo none + return 1 +} + function getnext { cd "$1/.autodl/" @@ -9,26 +30,21 @@ function getnext echo "checking $tag" sexpr="`cat sexpr`" unset badsizes - if [ -r "badlist" ]; then - read curep <"badlist" - echo "downloading bad files, curep $curep" - epfrom=badlist - elif [ -r curep ]; then - curep="`cat curep`" - echo "downloading series, curep $curep" - epfrom=curep - else + epinfo=(`findcurep`) + if [ "${epinfo[0]}" = none ]; then echo "no available episode of $tag" >&2 echo "$tag" >>"$HOME/dc/autodl/faulty" touch disabled return 1 fi + epfrom="${epinfo[0]}" + curep="${epinfo[1]}" unset badsizesl if [ -r badsizes ]; then badsizesl="$(sed -n "s/^0*$curep \([^#]*\)\( *#.*\)\?$/\1/p" badsizes)" fi if [ -n "$badsizesl" ]; then - read -a badsizes <<<"$badsizesl" + read -d/ -a badsizes <<<"$badsizesl" unset badsizesl echo "found bad size list: ${badsizes[@]}" fi @@ -63,7 +79,7 @@ function getnext wait $pid stat=$? if [ -r "$estatfile" ]; then - estat="`cat "$estatfile"`" + estat=(`cat "$estatfile"`) rm -f "$estatfile" fi if [ "$intr" = y ]; then @@ -90,13 +106,6 @@ function getnext mv -f newbadlist badlist if [ `wc -l >"$HOME/dc/autodl/badmaxed" fi @@ -105,21 +114,32 @@ function getnext if [ "$estat" = dbl ]; then echo -en "${tag}\n${curep}\n" >>"$HOME/dc/autodl/done" echo -en "${tag}\n$((${curep} + 1))\n" >>"$HOME/dc/autodl/done" - let curep+=2 + let "nextep=curep+2" else echo -en "${tag}\n${curep}\n" >>"$HOME/dc/autodl/done" - let curep++ + let "nextep=curep+1" fi - echo "$curep" >curep + echo "$nextep" >curep if [ -r maxep ]; then - if [ "$curep" -gt "`cat maxep`" ]; then - touch disabled + if [ "$nextep" -gt "`cat maxep`" ]; then echo "$tag has reached max" echo "$tag" >>"$HOME/dc/autodl/maxed" fi fi ;; esac + if [ "$estat" = bad ]; then + echo "episode reported as bad, adding to badlist" + echo "$curep" >>badlist + elif [ "${estat[0]}" = badsize ]; then + echo "size reported as bad" + echo "$curep" >>badlist + echo "$curep ${estat[1]}" >>badsizes + fi + if ! findcurep; then + echo "no more episodes to download from $tag" + touch disabled + fi fi fi rm -f "$outfile"