]> CyberLeo.Net >> Repos - CDN/taggery.git/blob - fetch
What is this I don't even...
[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 Gelbooru site, downloads and stashes the full-size
9 image in the md5 directory and adds whatever tags are found into the tag area.
10 EOF
11   kill $$
12   exit 1
13 }
14
15 [ "${*}" ] || pebkac
16 id="${1}"
17 [ -z "$(echo "${id}" | tr -d '[0-9]')" ] || pebkac "ID should be an integer"
18
19 taggery_name="$(basename "${0}")"
20 case "${taggery_name}" in
21 e621)
22   e621_image_url_filter() {
23     sed -e '/Size: /!d; s/^.*<a //; s/>.*$//; s/^.*href="\([^"]*\)".*$/\1/; /:\/\//!s/^/http:\/\/e621.net/'
24   }
25   e621_image_tags_filter() {
26     sed -e '/id="tag-sidebar"/,/<\/ul>/!d; /class="tag-type-/!d; s/\([^?]\)<\/a>.*$/\1/; s/^.*>//; s/ /_/g'
27   }
28   taggery_fmturl="http://e621.net/post/show/%s"
29   taggery_image_url_filter=e621_image_url_filter
30   taggery_image_tags_filter=e621_image_tags_filter
31   ;;
32 gelbooru)
33   gelbooru_image_url_filter() {
34     sed -e '/>Original image</!d; s/>Original image.*//i; s/^.*<a //i; s/^.*href="\([^"]*\)".*$/\1/i'
35   }
36   gelbooru_image_tags_filter() {
37     sed -e '/id="tag-sidebar"/!d; s/<\/li>/&\n/g' | sed -e '/class="tag-type-/!d; s/\([^?]\)<\/a>.*$/\1/; s/^.*>//; s/ /_/g'
38   }
39   taggery_fmturl="http://gelbooru.com/index.php?page=post&s=view&id=%s"
40   taggery_image_url_filter=gelbooru_image_url_filter
41   taggery_image_tags_filter=gelbooru_image_tags_filter
42   ;;
43 *) pebkac "Unsupported" ;;
44 esac
45
46 # Load KVS
47 kvs=".${taggery_name}.kvdb"
48 . "$(dirname "${0}")/lib/kvs.sh"
49
50 # Load Taggery
51 . "$(dirname "${0}")/lib/taggery.sh"
52 image_url() { taggery_image_url "${@}"; }
53 image_tags() { taggery_image_tags "${@}"; }
54
55 cd "$(dirname "${0}")"
56
57 file="$(image_url "${id}")"
58 tags="$(image_tags "${id}")"
59
60 [ "${file}" -a "${tags}" ] || { echo "Nothing found!"; kill $$; exit 1; }
61
62 name="$(basename "${file}")"
63 wget -O "md5/${name}" "${file}"
64 for tag in ${tags}
65 do
66   echo ${tag}
67   mkdir -p "tag/${tag}"
68   ln -sf "../../md5/${name}" "tag/${tag}/"
69 done