diff options
Diffstat (limited to '.local/bin/media-import')
-rwxr-xr-x | .local/bin/media-import | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/.local/bin/media-import b/.local/bin/media-import new file mode 100755 index 0000000..a1a99b2 --- /dev/null +++ b/.local/bin/media-import @@ -0,0 +1,53 @@ +#!/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 "$@" |