1 [ "${taggery_name}" -a "${taggery_fmturl}" -a "${taggery_image_url_filter}" -a "${taggery_image_tags_filter}" ] || {
4 Copyright - http://wiki.cyberleo.net/wiki/CyberLeo/COPYRIGHT?version=4
6 Set the following variables before sourcing this library:
8 taggery_base - The base directory where the taggery database
9 resides. This should contain the directories
11 taggery_libs - The base directory where the code resides.
13 The following should be defined by the profile:
15 taggery_name - A string token to use when formatting things
16 taggery_fmturl - A printf-compatible format string that will
17 transform an ID into the URL of a 'view' page.
18 taggery_image_url_filter - A program or function that takes a webpage on
19 stdin and provides on stdout the URL to the raw
20 image to be downloaded.
21 taggery_image_tags_filter - A program or function that takes a webpage on
22 stdin and provides on stdout a list of newline-
24 taggery_image_referer - A program or function that takes an id and
25 returns the referer URL for that id.
29 taggery_fmturl="http://e621.net/post/show/%s"
30 taggery_fmturl="http://gelbooru.com/index.php?page=post&s=view&id=%s"
33 e621_image_url_filter() { sed -e '...'; }
34 taggery_image_url_filter="e621_image_url_filter"
41 local cleanup="$(kvs_get "${taggery_name}" cleanup)"
47 taggery_free_page "${id}"
50 kvs_unset "${taggery_name}" cleanup
52 [ "${DEBUG}" ] || trap "taggery_cleanup" EXIT HUP INT TERM KILL
54 taggery_register_cleanup() {
55 [ "${1}" ] || return 1
57 kvs_set "${taggery_name}" cleanup "$(kvs_get "${taggery_name}" cleanup) ${id}"
61 [ "${1}" ] || return 1
63 kvs_set "${taggery_name}/${id}" tmp "$(mktemp "${taggery_temp}/.taggery_${id}.XXXXXXXX")"
64 kvs_set "${taggery_name}/${id}" url "$(printf "${taggery_fmturl}" "${id}")"
65 taggery_register_cleanup "${id}"
69 [ "${1}" ] || return 1
71 local tmp="$(kvs_get "${taggery_name}/${id}" tmp)"
72 [ -f "${tmp}" -a "${tmp%%_*}" = "${taggery_temp}/.taggery" ] && rm -f "${tmp}"
73 kvs_unset_all "${taggery_name}/${id}"
76 taggery_fetch_page() {
77 [ "${1}" ] || return 1
79 kvs_has_id "${taggery_name}/${id}" || taggery_init_page "${id}"
80 local url="$(kvs_get "${taggery_name}/${id}" url)"
81 local tmp="$(kvs_get "${taggery_name}/${id}" tmp)"
82 wget ${taggery_user_agent:+--user-agent="${taggery_user_agent}"} -qO "${tmp}" "${url}"
86 [ "${1}" ] || return 1
88 kvs_has_id "${taggery_name}/${id}" || taggery_init_page "${id}"
89 local tmp="$(kvs_get "${taggery_name}/${id}" tmp)"
90 [ -s "${tmp}" ] || taggery_fetch_page "${id}"
95 [ "${1}" ] || return 1
97 echo "${url}" | "${taggery_id_filter}"
100 taggery_image_name() {
101 [ "${1}" ] || return 1
103 local url="$(taggery_image_url "${id}")"
104 if [ "${taggery_image_name_filter}" ]
106 "${taggery_image_name_filter}" "${id}" "${url}"
108 name="$(basename "${url}")"
114 taggery_image_url() {
115 [ "${1}" ] || return 1
117 taggery_page "${id}" | "${taggery_image_url_filter}"
120 taggery_image_referer() {
121 [ "${1}" ] || return 1
123 [ "${taggery_image_referer}" ] || return 0
124 "${taggery_image_referer}" "${id}"
127 taggery_fetch_image() {
128 [ "${1}" ] || return 1
130 name="$(taggery_image_name "${id}")"
131 file="$(taggery_image_url "${id}")"
132 referer="$(taggery_image_referer "${id}")"
133 wget ${taggery_user_agent:+--user-agent="${taggery_user_agent}"} ${referer:+--referer="${referer}"} -O "${taggery_base}/md5/${name}" "${file}"
136 taggery_image_tags() {
137 [ "${1}" ] || return 1
139 echo "${taggery_name}"
140 taggery_page "${id}" | "${taggery_image_tags_filter}"
143 taggery_sanitize_tag() {
144 [ "${1}" ] || return 1
146 echo "${tag}" | sed -e 's/\//%47/g; s/[\]/\\&/g'
149 taggery_link_tags() {
150 [ "${1}" ] || return 1
152 taggery_image_tags "${id}" | while read tag
154 [ "${tag}" ] || continue
156 tag="$(taggery_sanitize_tag "${tag}")"
157 mkdir -p "${taggery_base}/tag/${tag}"
158 ln -sf "../../md5/${name}" "${taggery_base}/tag/${tag}/"
162 : ${taggery_temp:=${taggery_base}/tmp}
164 mkdir -p "${taggery_temp}" "${taggery_base}/md5" "${taggery_base}/tag" "${taggery_base}/pool"
165 TMPDIR="${taggery_temp}"
166 kvs="${taggery_temp}/taggery.kvs"
167 . "${taggery_libs}/kvs.sh"