Add annna-add-hashtag script. - annna - Annna the nice friendly bot.
 (HTM) git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
       ---
 (DIR) commit a6dcadfdfe85e7056b35f76ff25773a2d9fe43a6
 (DIR) parent 4890d6ecf11ff49bbe5d64460babe7e2adf146aa
 (HTM) Author: Annna Robert-Houdin <annna@bitreich.org>
       Date:   Sat, 28 Dec 2019 22:54:36 +0100
       
       Add annna-add-hashtag script.
       
       Diffstat:
         A annna-add-hashtag                   |     121 +++++++++++++++++++++++++++++++
       
       1 file changed, 121 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/annna-add-hashtag b/annna-add-hashtag
       @@ -0,0 +1,121 @@
       +#!/bin/sh
       +
       +memecachedir="/br/gopher/memecache"
       +hashtagdb="/home/annna/bin/modules/hashtags/hashtags.txt"
       +unprocessed="$(pwd)/unprocessed.txt"
       +
       +[ ! -e "${hashtagdb}" ] && touch "${hashtagdb}"
       +
       +dltag() {
       +        tag="$1"
       +        uri="$2"
       +
       +        grep "${tag} " $hashtagdb >/dev/null
       +        if [ $? -eq 0 ];
       +        then
       +                printf "tag '%s' already in db.\n" "${tag}" >&2
       +                printf "%s %s\n" "${tag}" "${uri}" >> "${unprocessed}"
       +                return 1
       +        fi
       +        stag="$(printf "${tag}\n" | cut -c 2-)"
       +
       +        cd "${memecachedir}"
       +        error=0
       +        case "$uri" in
       +        *youtube.com*|*youtu.be*|*dumpert.nl*|*vimeo.com*)
       +                youtube-dl -o "${stag}.%(ext)s" "${uri}"
       +                if [ $? -gt 0 ];
       +                then
       +                        error=1
       +                        printf "youtube-dl tag '%s' had problems.\n" "${tag}" >&2
       +                        printf "%s %s\n" "${tag}" "${uri}" >> "${unprocessed}"
       +                fi
       +                ;;
       +        gopher://bitreich.org/*)
       +                ;;
       +        *)
       +                ext="$(basename "${uri}" | sed 's/^.*\.//')"
       +                curl -o "${stag}.${ext}" "${uri}"
       +                if [ $? -gt 0 ];
       +                then
       +                        error=1
       +                        printf "curl tag '%s' had problems.\n" "${tag}" >&2
       +                        printf "%s %s\n" "${tag}" "${uri}" >> "${unprocessed}"
       +                fi
       +                ;;
       +        esac
       +        if [ $error -eq 0 ];
       +        then
       +                printf "tag '%s' downloaded.\n" "${tag}" >&2
       +                printf "%s\n" "${uri}" > "${stag}.orig"
       +        fi
       +
       +        return $error
       +}
       +
       +inserttag() {
       +        tag="$1"
       +        uri="$2"
       +        
       +        grep "${tag} " $hashtagdb >/dev/null
       +        if [ $? -eq 0 ];
       +        then
       +                printf "tag '%s' already in db.\n" "${tag}" >&2
       +                printf "%s %s\n" "${tag}" "${uri}" >> "${unprocessed}"
       +                return 1
       +        fi
       +
       +        stag="$(printf "${tag}\n" | cut -c 2-)"
       +        cd "${memecachedir}"
       +        tagfile="$(basename "$(find . -name "${stag}.*" | grep -v .orig)")"
       +        case "${tagfile}" in
       +        *.jpg|*.JPG|*.jpeg|*.JPEG|*.png|*.PNG|*.svg|*.SVG)
       +                tagtype="I"
       +                ;;
       +        *.gif|*.GIF)
       +                tagtype="g"
       +                ;;
       +        *.txt|*.TXT|*.vt|*.VT)
       +                tagtype="0"
       +                ;;
       +        *)
       +                tagtype="9"
       +                ;;
       +        esac
       +        memecacheuri="gopher://bitreich.org/${tagtype}/memecache/${tagfile}"
       +
       +        printf "%s %s\n" "${tag}" "${memecacheuri}" >> "${hashtagdb}"
       +        printf "tag '%s' added as '%s' to hashtags db.\n" "${tag}" "${memecacheuri}" >&2
       +}
       +
       +addtag() {
       +        tag="$1"
       +        uri="$2"
       +
       +        dltag "$1" "$2"
       +        [ $? -gt 0 ] && return
       +        inserttag "$1" "$2"
       +}
       +
       +if [ $# -eq 2 ];
       +then
       +        tag="$1"
       +        uri="$2"
       +
       +        addtag "${tag}" "${uri}"
       +else
       +        if [ $# -eq 1 ];
       +        then
       +                [ -e "$1" ] && cat "$1" \
       +                | while read -r tag uri;
       +                do
       +                        addtag "${tag}" "${uri}"
       +                done
       +        else
       +                while read -r tag uri;
       +                do
       +                        addtag "${tag}" "${uri}"
       +                done
       +        fi
       +fi
       +