gpio: Fixed usage message.
[utils.git] / autodlctl
index 3f390ce..134fb8d 100755 (executable)
--- 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 <badlist` -eq 0 ]; then
                        rm badlist
-                       if [ -r curep ]; then
-                           if [ -r maxep ] && [ "`cat curep`" -gt "`cat maxep`" ]; then
-                               touch disabled
-                           fi
-                       else
-                           touch disabled
-                       fi
                        echo "$tag has no more bad episodes"
                        echo "$tag" >>"$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"