From 9d5de20e63e0e1347b9249402bfc5600e1faff5d Mon Sep 17 00:00:00 2001 From: CyberLeo Date: Mon, 15 Aug 2016 03:22:13 -0500 Subject: [PATCH] Add lolibooru and smarter filename extractor --- fetch | 11 ++--------- lib/profiles/lolibooru | 23 +++++++++++++++++++++++ lib/taggery.sh | 17 +++++++++++++++-- 3 files changed, 40 insertions(+), 11 deletions(-) create mode 100644 lib/profiles/lolibooru diff --git a/fetch b/fetch index 47cd949..1223dc1 100755 --- a/fetch +++ b/fetch @@ -59,10 +59,12 @@ done # Load Taggery . "${taggery_libs}/taggery.sh" url_id() { taggery_id "${@}"; } +image_name() { taggery_image_name "${@}"; } image_url() { taggery_image_url "${@}"; } image_tags() { taggery_image_tags "${@}"; } id="$(url_id "${url}")" +name="$(image_name "${id}")" file="$(image_url "${id}")" tags="$(image_tags "${id}")" [ "${file}" ] || name="${hash}" @@ -81,15 +83,6 @@ extn="${name#*.}" [ "${file}" -o "${hash}" ] || { echo "No download URL (deleted?) and -f not provided" >&2; kill -ABRT $$; exit 1; } [ "${tags}" ] || { echo "No tags found" >&2; kill -ABRT $$; exit 1; } -if [ "${file}" ] -then - name="$(basename "${file}")" - name="${name%%\?*}" -else - name="${hash}" -fi -extn="${name#*.}" - unset nabbed if [ "${file}" ] then diff --git a/lib/profiles/lolibooru b/lib/profiles/lolibooru new file mode 100644 index 0000000..65ccebb --- /dev/null +++ b/lib/profiles/lolibooru @@ -0,0 +1,23 @@ +lolibooru_can_handle() { + local url="${1}" + echo "${url}" | grep -qi 'lolibooru.moe/post/show/[0-9]*' || return 1 + taggery_id_filter=lolibooru_id_filter + taggery_fmturl="https://lolibooru.moe/post/show/%s" + taggery_image_name_filter=lolibooru_image_name_filter + taggery_image_url_filter=lolibooru_image_url_filter + taggery_image_tags_filter=lolibooru_image_tags_filter +} +lolibooru_id_filter() { + sed -e 's#^.*/post/show/\([0-9]\+\)\($\|/.*$\)#\1#' +} +lolibooru_image_url_filter() { + sed -e '/id="highres"/!d; s/^.*href="\([^"]*\)".*$/\1/i' +} +lolibooru_image_tags_filter() { + sed -e '/id="tag-sidebar"/,/<\/ul>/!d; s/<\/li>/&\n/g' | sed -e '/class="tag-link/!d; s/\([^?]\)<\/a>.*$/\1/; s/^.*>//; s/ /_/g' +} +lolibooru_image_name_filter() { + local id="${1}" + local image_url="${2}" + echo "${image_url}" | sed -e 's#^.*/image/##; s#/.*\(\.[^.]*\)$#\1#' +} diff --git a/lib/taggery.sh b/lib/taggery.sh index 16f5c23..4279c2b 100644 --- a/lib/taggery.sh +++ b/lib/taggery.sh @@ -97,6 +97,20 @@ taggery_id() { echo "${url}" | "${taggery_id_filter}" } +taggery_image_name() { + [ "${1}" ] || return 1 + local id="${1}" + local url="$(taggery_image_url "${id}")" + if [ "${taggery_image_name_filter}" ] + then + "${taggery_image_name_filter}" "${id}" "${url}" + else + name="$(basename "${file}")" + name="${name%%\?*}" + echo "${name}" + fi +} + taggery_image_url() { [ "${1}" ] || return 1 local id="${1}" @@ -113,9 +127,8 @@ taggery_image_referer() { taggery_fetch_image() { [ "${1}" ] || return 1 local id="${1}" + name="$(taggery_image_name "${id}")" file="$(taggery_image_url "${id}")" - name="$(basename "${file}")" - name="${name%%\?*}" referer="$(taggery_image_referer "${id}")" wget ${taggery_user_agent:+--user-agent="${taggery_user_agent}"} ${referer:+--referer="${referer}"} -O "${taggery_base}/md5/${name}" "${file}" } -- 2.42.0