aboutsummaryrefslogtreecommitdiff
path: root/.local/bin/media-import
blob: a1a99b20de7b4813c66339613e2474757dbde2e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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 "$@"