From a980991fdc63c31bb3795b7974c407fe024534bc Mon Sep 17 00:00:00 2001 From: Klesh Wong Date: Thu, 5 Nov 2020 18:47:12 +0800 Subject: [PATCH] [misc] move dict.sh to a new project --- bin/d | 85 ---------------------------------------------------- bin/dict.awk | 41 ------------------------- 2 files changed, 126 deletions(-) delete mode 100755 bin/d delete mode 100755 bin/dict.awk diff --git a/bin/d b/bin/d deleted file mode 100755 index 72b4b11..0000000 --- a/bin/d +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/sh - -# shellcheck disable=2086,2059 - -# dmenu optional patches: preselect / center -# fzf selector: 'fzf --reverse --height=30%%' -set -e -DIR="$(readlink -f "$(dirname "$0")")" - -# compose selector command if not specified -if [ -z "$SELECTOR" ]; then - if command -v dmenu >/dev/null; then - SELECTOR='dmenu -i -fn monospace:13 -nb #626262 -nf #bbbbbb -sb #5b97f7 -sf #eeeeee -l 20' - dmenu -h 2>&1 | grep -qF ' [-n number]' && SELECTOR="$SELECTOR -n %i" - dmenu -h 2>&1 | grep -qP '\[-\w*c\w*\]' && SELECTOR="$SELECTOR -c" - elif command -v fzf >/dev/null; then - SELECTOR='fzf --reverse --height=30%%' - else - echo 'require either dmenu or fzf' - exit 1 - fi -fi -EMPTY_RESULT=' 查无结果' -GREETING='﬜ 请输入单词并回车' - - -request() { - RESULT="$( - curl -SsLG "http://dict.youdao.com/w/eng/$SENTENCE/" \ - | awk -v PI=' ' -f "$DIR/dict.awk" - )" - display -} - -pronounce() { - PLAY=afplay - ! command -v "$PLAY" 2>/dev/null && PLAY="ffplay -nodisp -autoexit" - FP="/tmp/dict/$*.mp3" - mkdir -p /tmp/dict - [ ! -f "$FP" ] && curl -o "$FP" "http://dict.youdao.com/dictvoice?audio=$1&type=$2" 1>/dev/null 2>&1 - $PLAY "$FP" 1>/dev/null 2>&1 -} - -display() { - R="$RESULT" - if [ -z "$R" ]; then - if [ -n "$SENTENCE" ]; then - R="$EMPTY_RESULT : $SENTENCE" - else - R="$GREETING" - fi - fi - SELECT=$(printf "$SELECTOR" "$LINE_NUM") - echo "$R" \ - | $SELECT \ - | if IFS= read -r INPUT; then - if echo "$INPUT" | grep -qP ' '; then - if echo "$INPUT" | grep -q '美'; then - pronounce "$SENTENCE" 2 & - else - pronounce "$SENTENCE" 1 & - fi - echo awk '"'$INPUT'" { print NR }' - LINE_NUM=$(echo "$RESULT" | awk -v INPUT="$INPUT" '$0==INPUT { print NR - 1 }') - display $LINE_NUM - elif echo "$INPUT" | grep -qF "$EMPTY_RESULT" || echo "$INPUT" | grep -qF "$GREETING"; then - return - elif echo "$INPUT" | grep -qP '^ '; then - printf "%s" "$INPUT" | sed 's/^\s+//' | xsel -b - else - SENTENCE="$INPUT" - request - fi - fi -} - - -SENTENCE="$*" -if [ -n "$SENTENCE" ]; then - request -else - display -fi -#pronounce "$@" - diff --git a/bin/dict.awk b/bin/dict.awk deleted file mode 100755 index 32da288..0000000 --- a/bin/dict.awk +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/awk - -BEGIN { - if (color) { - HEAD = " \033[33m\033[1m%s\033[0m\n" - TRAN = " \033[32m%s\033[0m\n" - } else { - HEAD = " %s\n" - TRAN = " %s\n" - } - stop = 0 -} - -!stop { - if (match($0, //, m)) { - sentence = m[1] - } else if (match($0, /(\w)/, m)) { - pronounce = m[1] - } else if (match($0, /(.+)<\/span>/, m)) { - phonetic = m[1] - } else if (match($0, /
  • ([a-z]+\..+)<\/li>/, m)) { - if (sentence) { - printf HEAD, sentence - sentence = "" - } - printf TRAN, m[1] - } else if (match($0, /
    (.+)<\/a>/, m)) { - printf " %s\n", m[1] - } else if (synonyms && match($0, /<\/div>/)) { - stop = 1 - } - - if (pronounce && phonetic) { - printf " %s %s %s\n", PI, pronounce, phonetic - pronounce = "" - phonetic = "" - } -}