]> CyberLeo.Net >> Repos - CDN/taggery.git/blob - fetch
Rudimentary pool support
[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 while getopts p:i: OPT
17 do
18   case "${OPT}" in
19   p)  pool="${OPTARG}" ;;
20   i)  indx="${OPTARG}" ;;
21   ?)  pebkac ;;
22   esac
23 done
24 shift $(( $OPTIND - 1 ))
25
26 [ "${*}" ] || pebkac
27 id="${1}"
28 [ -z "$(echo "${id}" | tr -d '[0-9]')" ] || pebkac "ID should be an integer"
29
30 taggery_name="$(basename "${0}")"
31 taggery_profile="$(dirname "${0}")/lib/profiles/${taggery_name}"
32 [ -f "${taggery_profile}" ] || pebkac "Unsupported profile: ${taggery_name}"
33 . "${taggery_profile}"
34
35 # Set up temporary area
36 mkdir -p "$(dirname "${0}")/tmp"
37 TMPDIR="$(dirname "${0}")/tmp"
38
39 # Load KVS
40 kvs="${TMPDIR}/.${taggery_name}.kvdb"
41 . "$(dirname "${0}")/lib/kvs.sh"
42
43 # Load Taggery
44 . "$(dirname "${0}")/lib/taggery.sh"
45 image_url() { taggery_image_url "${@}"; }
46 image_tags() { taggery_image_tags "${@}"; }
47
48 cd "$(dirname "${0}")"
49
50 file="$(image_url "${id}")"
51 tags="$(image_tags "${id}")"
52
53 [ "${file}" -a "${tags}" ] || { echo "Nothing found!"; kill $$; exit 1; }
54
55 name="$(basename "${file}")"
56 extn="${name#*.}"
57
58 if [ -e "md5/${name}" ]
59 then
60   echo "Filename md5/${name} already exists"
61 else
62   wget -O "md5/${name}" "${file}"
63   for tag in ${tags}
64   do
65     echo ${tag}
66     tag="$(echo "${tag}" | sed -e 's/\//%47/g; s/[\]/\\&/g')"
67     mkdir -p "tag/${tag}"
68     ln -sf "../../md5/${name}" "tag/${tag}/"
69   done
70 fi
71
72 # Even if we didn't download it, try to link it into the pool
73 [ "${pool}" ] && {
74   plnm="pool/${pool}/${indx}.${extn}"
75   if [ -e "${plnm}" ]
76   then
77     echo "Filename ${plnm} already exists"
78   else
79     mkdir -p "pool/${pool}"
80     ln -svf "../../md5/${name}" "${plnm}"
81   fi
82 }