]> CyberLeo.Net >> Repos - CDN/taggery.git/blob - fetch
Use tmp/ for temporary file storage
[CDN/taggery.git] / fetch
1 #!/bin/sh -e
2
3 pebkac() {
4   [ "${*}" ] && printf "%s\n\n" "${*}"
5   cat <<EOF
6 Usage: $(basename "${0}") <id>
7
8 Given an ID number from the site:
9 * downloads and stashes the full-size image in the md5 directory
10 * adds whatever tags are found into the tag area
11 EOF
12   kill $$
13   exit 1
14 }
15
16 [ "${*}" ] || pebkac
17 id="${1}"
18 [ -z "$(echo "${id}" | tr -d '[0-9]')" ] || pebkac "ID should be an integer"
19
20 taggery_name="$(basename "${0}")"
21 taggery_profile="$(dirname "${0}")/lib/profiles/${taggery_name}"
22 [ -f "${taggery_profile}" ] || pebkac "Unsupported profile: ${taggery_name}"
23 . "${taggery_profile}"
24
25 # Set up temporary area
26 mkdir -p "$(dirname "${0}")/tmp"
27 TMPDIR="$(dirname "${0}")/tmp"
28
29 # Load KVS
30 kvs="${TMPDIR}/.${taggery_name}.kvdb"
31 . "$(dirname "${0}")/lib/kvs.sh"
32
33 # Load Taggery
34 . "$(dirname "${0}")/lib/taggery.sh"
35 image_url() { taggery_image_url "${@}"; }
36 image_tags() { taggery_image_tags "${@}"; }
37
38 cd "$(dirname "${0}")"
39
40 file="$(image_url "${id}")"
41 tags="$(image_tags "${id}")"
42
43 [ "${file}" -a "${tags}" ] || { echo "Nothing found!"; kill $$; exit 1; }
44
45 name="$(basename "${file}")"
46 [ ! -e "md5/${name}" ] || { echo "Filename md5/${name} already exists!"; kill $$; exit 1; }
47 wget -O "md5/${name}" "${file}"
48 for tag in ${tags}
49 do
50   echo ${tag}
51   tag="$(echo "${tag}" | sed -e 's/\//%47/g; s/[\]/\\&/g')"
52   mkdir -p "tag/${tag}"
53   ln -sf "../../md5/${name}" "tag/${tag}/"
54 done