aboutsummaryrefslogtreecommitdiff
path: root/.local/bin/media-import
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/media-import')
-rwxr-xr-x.local/bin/media-import53
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 "$@"