use an empty case entry instead of checking [ -n "$x" ] before it - annna - Annna the nice friendly bot. HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/ DIR Log DIR Files DIR Refs DIR Tags DIR README --- DIR commit 9a192ffcabc9b67d60a1db9843ad8100397a6db4 DIR parent cb97a0dd368eed35d9db94ffdc0c577788dfe168 HTML Author: Josuah Demangeon <me@josuah.net> Date: Sat, 2 Jul 2022 13:57:23 +0200 use an empty case entry instead of checking [ -n "$x" ] before it This helps with flattening the script: before: if [ -n "$x" ] then case $x in "content") ... ;; "content") ... ;; esac fi after case $x in "") ;; "content") ... ;; "content") ... ;; esac The patch is more readable when ignoring spaces: git diff -w Signed-off-by: Annna Robert-Houdin <annna@bitreich.org> Diffstat: M annna-message-common | 271 +++++++++++++++---------------- 1 file changed, 135 insertions(+), 136 deletions(-) --- DIR diff --git a/annna-message-common b/annna-message-common @@ -33,8 +33,6 @@ regeximatch() { [ "$user" = "${botname}" ] && exit 0 -uri="$(printf "%s\n" "${text}" \ - | sed -n '/.*\(https\{0,1\}:\/\/[^ ]\{1,\}\).*/s//\1/p')" case "${text}" in *\#nospoil*) ;; @@ -42,160 +40,161 @@ case "${text}" in query=${text#**::} query=${query%%::*} annna-say -s "${server}" -c "${channel}" "$(dalle-gen-emoji "${query}")" & ;; -*) - if [ -n "${uri}" ] - then - tmpf=$(mktemp) - fetch-uri "${uri}" > "${tmpf}" - urititle="$(grabtitle < "${tmpf}")" +*http*://*) + uri="$(printf "%s\n" "${text}" \ + | sed -n '/.*\(https\{0,1\}:\/\/[^ ]\{1,\}\).*/s//\1/p')" - # Set below and annna will concatenate at the end. - # Subtitle URI. - sturi="" - # Replacement URI. - nuri="" - # Replacement URI display string. - nuris="" - # html2text content. - curi="" - # Set to 0, if some URI content should be shown. - nocuri=1 - # Screenshot. - suri="" + tmpf=$(mktemp) + fetch-uri "${uri}" > "${tmpf}" + urititle="$(grabtitle < "${tmpf}")" - # titleend=1 will not output any further. - titleend=0 - outputstr="" + # Set below and annna will concatenate at the end. + # Subtitle URI. + sturi="" + # Replacement URI. + nuri="" + # Replacement URI display string. + nuris="" + # html2text content. + curi="" + # Set to 0, if some URI content should be shown. + nocuri=1 + # Screenshot. + suri="" - if [ -n "$urititle" ]; - then - case "${urititle}" in - *Gunther*|*GUNTHER*|*Günther*) - annna-say -s "${server}" -c "${channel}" "Oh Günther! ❤ ❤ ❤ ${urititle}" - ;; - *\|\ Cloudflare*) - annna-say -s "${server}" -c "${channel}" "Mind your own business! We got clownflared: gopher://bitreich.org/0/ascii/clownflare.vt" - titleend=1 - ;; - esac - fi + # titleend=1 will not output any further. + titleend=0 + outputstr="" - case "${uri}" in - *github.com/*/blob/*) - urltitle="" - nuris="$(printf '%s' "${uri}" | sed 's/blob/raw/')" - nocuri=0 - ;; + case "${urititle}" in + "") + ;; + *Gunther*|*GUNTHER*|*Günther*) + annna-say -s "${server}" -c "${channel}" "Oh Günther! ❤ ❤ ❤ ${urititle}" + ;; + *\|\ Cloudflare*) + annna-say -s "${server}" -c "${channel}" "Mind your own business! We got clownflared: gopher://bitreich.org/0/ascii/clownflare.vt" + titleend=1 + ;; + esac - *imgur.com/*) - nuris="$(youtube-dl -g "${uri}")" - if [ $? -gt 0 ]; - then - nuris="" - fi - ;; - *xkcd.com/*) - nuris="$(xkcd-uri "${uri}")" - ;; - *imdb.com/title/*) - movietitle="$(imdb2gopherbay "${uri}" | sed 's, ,+,g')" - if [ -n "${movietitle}" ]; - then - nuris="gopher://bay.parazy.de:666/1/q.dcgi?${movietitle}" - fi - ;; - *themoviedb.org/movie/*) - movietitle="$(themoviedb2gopherbay "${uri}" | sed 's, ,+,g')" - if [ -n "${movietitle}" ]; - then - nuris="gopher://bay.parazy.de:666/1/q.dcgi?${movietitle}" - fi - ;; - *lichess.org/????????|*lichess.org/????????/|*lichess.org/????????/black|*lichess.org/????????/white) - nuris="$(printf "%s\n" "${uri}" \ - | sed 's,https://lichess.org\(/[^ ]*\)$,\1,; s,^/\([^/]*\)/black$,/black/\1,; s,/white,,; s,\(.*\),https://lichess1.org/game/export/gif\1.gif,;')" - ;; - *www.npr.org/*) + case "${uri}" in + "") + ;; + *github.com/*/blob/*) + urltitle="" + nuris="$(printf '%s' "${uri}" | sed 's/blob/raw/')" + nocuri=0 + ;; + + *imgur.com/*) + nuris="$(youtube-dl -g "${uri}")" + if [ $? -gt 0 ]; + then + nuris="" + fi + ;; + *xkcd.com/*) + nuris="$(xkcd-uri "${uri}")" + ;; + *imdb.com/title/*) + movietitle="$(imdb2gopherbay "${uri}" | sed 's, ,+,g')" + if [ -n "${movietitle}" ]; + then + nuris="gopher://bay.parazy.de:666/1/q.dcgi?${movietitle}" + fi + ;; + *themoviedb.org/movie/*) + movietitle="$(themoviedb2gopherbay "${uri}" | sed 's, ,+,g')" + if [ -n "${movietitle}" ]; + then + nuris="gopher://bay.parazy.de:666/1/q.dcgi?${movietitle}" + fi + ;; + *lichess.org/????????|*lichess.org/????????/|*lichess.org/????????/black|*lichess.org/????????/white) + nuris="$(printf "%s\n" "${uri}" \ + | sed 's,https://lichess.org\(/[^ ]*\)$,\1,; s,^/\([^/]*\)/black$,/black/\1,; s,/white,,; s,\(.*\),https://lichess1.org/game/export/gif\1.gif,;')" + ;; + *www.npr.org/*) + post="$(printf '%s\n' "${uri}" | cut -d / -f 7)" + if [ -n "${post}" ]; + then + nuri="https://text.npr.org/s.php?sId=${post}" + nuris="text only: ${nuri}" + fi + ;; + *www.reddit.com*) + nuri="$(printf '%s\n' "${uri}" | sed "s;www.reddit.com;old.reddit.com;")" + nuris="old.reddit: ${nuri}" + fetch-uri "${nuri}" > "${tmpf}" + if [ -n "${uri#*www.reddit.com/r/*}" ]; + then + subreddit="$(printf '%s\n' "${uri}" | cut -d / -f 5)" post="$(printf '%s\n' "${uri}" | cut -d / -f 7)" if [ -n "${post}" ]; then - nuri="https://text.npr.org/s.php?sId=${post}" - nuris="text only: ${nuri}" + guri="gopher://gopherddit.com/1/cgi-bin/reddit.cgi?view&${post}&${subreddit}&10" + else + guri="gopher://gopherddit.com/1/cgi-bin/reddit.cgi?menu&${subreddit}&10" fi - ;; - *www.reddit.com*) - nuri="$(printf '%s\n' "${uri}" | sed "s;www.reddit.com;old.reddit.com;")" - nuris="old.reddit: ${nuri}" - fetch-uri "${nuri}" > "${tmpf}" - if [ -n "${uri#*www.reddit.com/r/*}" ]; - then - subreddit="$(printf '%s\n' "${uri}" | cut -d / -f 5)" - post="$(printf '%s\n' "${uri}" | cut -d / -f 7)" - if [ -n "${post}" ]; - then - guri="gopher://gopherddit.com/1/cgi-bin/reddit.cgi?view&${post}&${subreddit}&10" - else - guri="gopher://gopherddit.com/1/cgi-bin/reddit.cgi?menu&${subreddit}&10" - fi - nuris="${nuri} ; gopherdit: ${guri}" - fi - nocuri=0 - ;; - *twitter.com*) - ninstance="$(nitter-instance | sed 's,\.,\\\.,g')" - nuri="$(printf "%s\n" "${uri}" | sed "s;\(mobile\.\)\{0,1\}twitter\.com;${ninstance};")" + nuris="${nuri} ; gopherdit: ${guri}" + fi + nocuri=0 + ;; + *twitter.com*) + ninstance="$(nitter-instance | sed 's,\.,\\\.,g')" + nuri="$(printf "%s\n" "${uri}" | sed "s;\(mobile\.\)\{0,1\}twitter\.com;${ninstance};")" + fetch-uri "${nuri}" > "${tmpf}" + urititle="$(curl-grabtitle "${nuri}")" + suri="$(screenshot-paste "${nuri}")" + nuris="nitter: ${nuri}" + nocuri=0 + ;; + *en.wikipedia.org/wiki*) + if ! regeximatch "$uri" '\.(jpg,bmp,gif,png,tiff,avi,mp4,webm,mkv,pdf,ps,eps)$'; + then + nuri="$(printf '%s\n' "${uri}" | sed -e "s;.*en.wikipedia.org/wiki;gopher://gopherpedia.com/0;" -e "s;#.*$;;")" + nuris="$(printf 'gopherpedia: %s\n' "${nuri}")" fetch-uri "${nuri}" > "${tmpf}" - urititle="$(curl-grabtitle "${nuri}")" - suri="$(screenshot-paste "${nuri}")" - nuris="nitter: ${nuri}" nocuri=0 - ;; - *en.wikipedia.org/wiki*) - if ! regeximatch "$uri" '\.(jpg,bmp,gif,png,tiff,avi,mp4,webm,mkv,pdf,ps,eps)$'; - then - nuri="$(printf '%s\n' "${uri}" | sed -e "s;.*en.wikipedia.org/wiki;gopher://gopherpedia.com/0;" -e "s;#.*$;;")" - nuris="$(printf 'gopherpedia: %s\n' "${nuri}")" - fetch-uri "${nuri}" > "${tmpf}" - nocuri=0 - fi - ;; - *youtube.com/*|*youtu.be/*) - nuri="https://yewtu.be/${uri#https*://*/}" - fetch-uri "${nuri}" > "${tmpf}" - urititle="$(curl-grabtitle "${nuri}")" - sturi="$(subtitle-paste "${uri}")" - nuris="invidious: ${nuri}" + fi + ;; + *youtube.com/*|*youtu.be/*) + nuri="https://yewtu.be/${uri#https*://*/}" + fetch-uri "${nuri}" > "${tmpf}" + urititle="$(curl-grabtitle "${nuri}")" + sturi="$(subtitle-paste "${uri}")" + nuris="invidious: ${nuri}" + nocuri=0 + ;; + *) + mimetype="$(file -b --mime-type "${tmpf}")" + case "${mimetype}" in + text/*) nocuri=0 ;; - *) - mimetype="$(file -b --mime-type "${tmpf}")" - case "${mimetype}" in - text/*) - nocuri=0 - ;; - esac - ;; esac + ;; + esac - if [ $titleend -eq 0 ]; + if [ $titleend -eq 0 ]; + then + if [ $nocuri -eq 0 ]; then - if [ $nocuri -eq 0 ]; + if [ -z "${curi}" ]; then - if [ -z "${curi}" ]; - then - curi="$(html2text < "${tmpf}" | /br/bin/bitreich-paste)" - fi - outputstr="${outputstr} content: ${curi} ;" + curi="$(html2text < "${tmpf}" | /br/bin/bitreich-paste)" fi - - [ -n "${nuris}" ] && outputstr="${outputstr} ${nuris} ;" - [ -n "${urititle}" ] && outputstr="${outputstr} title: ${urititle} ;" - [ -n "${suri}" ] && outputstr="${outputstr} screen: ${suri} ;" - [ -n "${sturi}" ] && outputstr="${outputstr} subtitles: ${sturi} ;" - annna-say -s "${server}" -c "${channel}" "${outputstr}" + outputstr="${outputstr} content: ${curi} ;" fi - rm -f "${tmpf}" + + [ -n "${nuris}" ] && outputstr="${outputstr} ${nuris} ;" + [ -n "${urititle}" ] && outputstr="${outputstr} title: ${urititle} ;" + [ -n "${suri}" ] && outputstr="${outputstr} screen: ${suri} ;" + [ -n "${sturi}" ] && outputstr="${outputstr} subtitles: ${sturi} ;" + annna-say -s "${server}" -c "${channel}" "${outputstr}" fi + rm -f "${tmpf}" ;; esac