#!/bin/sh
-USER="username"
-PASS="password"
-
-if [ -r $HOME/.config/kaoconf ] ; then
- . $HOME/.config/kaoconf
- [ -n "$BWLDOWN" ] && BWLIM="--limit-rate=$BWLDOWN"
+if [ -z "$1" ] ; then
+ echo "ERROR: missing mandatory argument"
+ echo "Usage: $(basename $0) listfile|URL [bandwidth_limit]"
+ exit 1;
fi
+conffile="$HOME/.config/kaoconf"
+[ -r "$conffile" ] && . "$conffile"
+
URL_FILE="$1"
shift
-[ -n "$1" ] && BWLIM="--limit-rate=$1"
+[ -n "$1" ] && BWLDOWN="$1"
+
+if [ -n "$GETTER" ] && ! command -v "$GETTER" >/dev/null ; then
+ echo "Invalid download utility set, trying to figure something out."
+ GETTER=
+fi
+[ -z "$GETTER" ] && GETTER=$(command -v wget)
+[ -z "$GETTER" ] && GETTER=$(command -v curl)
+[ -z "$GETTER" ] && GETTER=$(command -v aria2c)
+[ -z "$GETTER" ] && GETTER=$(command -v wget2)
+if [ -z "$GETTER" ] ; then
+ echo "ERROR: No suitable download utility found!"
+ exit 2
+fi
-## Authentication
-## 1st alternative:
-GET_AUTH="&auth=$USER:$PASS"
-## 2nd alternative:
-POST_AUTH="--post-data=\'auth=$USER:$PASS\'"
-## 3rd alternative:
-HTTP_AUTH="--user=$USER --password=$PASS"
+case $(basename $GETTER) in
+ wget )
+ GENOPT="-c --retry-connrefused --auth-no-challenge"
+ OUTOPT="-O"
+ [ -n "$USER" ] && [ -n "$PASS" ] && HTTP_AUTH="--user=$USER --password=$PASS"
+ [ -n "$BWLDOWN" ] && BWLIM="--limit-rate=$BWLDOWN"
+ ;;
+ curl )
+ GENOPT="-C - -L --retry-connrefused" # --progress-bar "
+ OUTOPT="-o"
+ [ -n "$USER" ] && [ -n "$PASS" ] && HTTP_AUTH="--user $USER:$PASS"
+ [ -n "$BWLDOWN" ] && BWLIM="--limit-rate $BWLDOWN"
+ ;;
+ aria2c )
+ GENOPT="-c --http-auth-challenge=false --always-resume=false"
+ GENOPT="$GENOPT --console-log-level=error --file-allocation=none"
+ GENOPT="$GENOPT --download-result=full"
+ OUTOPT="-o"
+ [ -n "$USER" ] && [ -n "$PASS" ] && HTTP_AUTH="--http-user=$USER --http-passwd=$PASS"
+ [ -n "$BWLDOWN" ] && BWLIM="--max-download-limit=$BWLDOWN"
+ ;;
+ wget2 )
+ # NOTE: apparently, -c does not work in conjunction with -O option
+ echo "*****************************************"
+ echo "WARNING: wget2 download resume is broken!"
+ echo "*****************************************"
+ GENOPT="-c --retry-connrefused --auth-no-challenge --progress=bar"
+ OUTOPT="-O"
+ [ -n "$USER" ] && [ -n "$PASS" ] && HTTP_AUTH="--user=$USER --password=$PASS"
+ # NOTE: GNU Wget2 1.99.1 gives "Unknown option 'limit-rate'
+ #[ -n "$BWLDOWN" ] && BWLIM="--limit-rate=$BWLDOWN"
+ ;;
+esac
+[ -n "$USER" ] && [ -n "$PASS" ] && GET_AUTH="&auth=$USER:$PASS"
case "$URL_FILE" in
https://* )
TMP_FILE=$(mktemp kaoget_XXXX)
case "$URL_FILE" in
*"&q=1&m=0" )
- # If it appears to point to a generated directory listing, wget it.
- echo "# If it appears to point to a generated directory listing, wget it."
- wget -c --retry-connrefused \
- $POST_AUTH \
- $HTTP_AUTH --auth-no-challenge \
- -O "$TMP_FILE" \
- "$URL_FILE$GET_AUTH"
+ # URL appears to point to a generated listing, fetch it!
+ $GETTER $GENOPT $HTTP_AUTH $OUTOPT "$TMP_FILE" "$URL_FILE$GET_AUTH"
;;
- *)
- # Otherwise, store the URL verbatim.
+ * )
+ # Otherwise, just store the URL verbatim.
echo "echo $URL_FILE > $TMP_FILE"
echo "$URL_FILE" > $TMP_FILE
;;
esac
- # Either way, use the new file as the source for download URLs.
+ # Either way, use the new file to read download URLs from.
URL_FILE=$TMP_FILE
;;
esac
+sed -e 's/[[:space:]]*#.*// ; /^[[:space:]]*$/d' "$URL_FILE" |
while read URL; do
-
case "$URL" in
- "#"* )
- continue
- ;;
*/dl.php*f=* )
NAME=${URL#*f=}
NAME=${NAME%&*}
continue
;;
esac
-
NAME=$(echo $NAME | sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b")
NAME=${NAME#*/}
NAME=${NAME#*/}
NAME=${NAME#*/}
-
- if [ -n "$NAME" ] ; then
- mkdir -p "$(dirname "$NAME")"
- PNAME="$NAME".part
- mv "$NAME" "$PNAME" 2> /dev/null
- wget -c --retry-connrefused \
- $POST_AUTH \
- $HTTP_AUTH --auth-no-challenge \
- $BWLIM \
- -O "$PNAME" \
- "$URL$GET_AUTH" \
- && mv "$PNAME" "$NAME"
- fi
-
-done < "$URL_FILE"
+ [ -z "$NAME" ] && continue
+ mkdir -p "$(dirname "$NAME")"
+ PNAME="$NAME".part
+ mv "$NAME" "$PNAME" 2>/dev/null
+ echo "+------------------------------------------------------------------"
+ echo "| Starting Download:"
+ echo "| $NAME"
+ echo "+-------"
+ $GETTER $GENOPT $HTTP_AUTH $BWLIM $OUTOPT "$PNAME" "$URL$GET_AUTH" &&
+ mv "$PNAME" "$NAME"
+done
[ -n "$TMP_FILE" ] && rm -f $TMP_FILE