#!/bin/bash main() { # Show help if (( $# < 2 )) then echo "You need help" return 2 fi # Set the paths local basedir="${MEDIA_BASEDIR:-/var/media}" local mediadir="$basedir/$1" ; shift # Ask for confirmation through a keypress printf "Going to import %d URIs to %s...\n" "$#" "$mediadir" read -s -n1 # Loop over all given args for uri in "$@" do case "$uri" in http://*) import_http "$mediadir" "$uri" ;; https://*) import_http "$mediadir" "$uri" ;; *) import_local "$mediadir" "$uri" ;; esac done } import_http() { local dest="$1" ; shift local uri="$1" ; shift local temp="$(mktemp)" wget -c -O "$temp" "$uri" local output="$(import_local "$dest" "$temp" | awk '{ print $NF }')" printf "%s -> %s\n" "$uri" "$output" } import_local() { local dest="$1" ; shift local uri="$1" ; shift local hash="$(sha1sum "$uri" | awk '{ print $1 }')" local ext="$(identify "$uri" | awk '{ print tolower($2) }')" local out="$dest/$hash.$ext" mv -- "$uri" "$out" printf "%s -> %s\n" "$uri" "$out" } main "$@"