#!/bin/sh # title: soz # license: CC0 # author: Sunur Efe Vural # version: Dec 13, 2018 # dependencies: sdcv, w3m, hexdump, cat... # Wrapper dictionary script for stardict (using sdcv) and web # dictionaries (using w3m). Add dictionaries to the case statement. defineWord() { if [ -z "$1" ] ; then read -rp 'Enter word or phrase: ' word else word="$1" fi } interactiveMode() { [ -z "$1" ] && $0 "$dict" } queryDict() { defineWord "$2" word=$(echo "$word" | hexdump -v -e '/1 " %02x"' | sed 's/ 0a$//') site=$(echo "$1" | sed "s/\%s/$word/;y/ /%/") w3m -o display_link_number=0 "$site" | cat interactiveMode "$2" } sdcvDict() { defineWord "$2" sdcv -n -u "$1" "$word" interactiveMode "$2" } dict=$1 shift case $dict in tr) queryDict "https://tr.wiktionary.org/w/index.php?search=%s&title=%D6zel%3AAra" "$*" ;; azen) queryDict "https://azerdict.com/az/english/%s" "$*" ;; tren) queryDict "http://www.zargan.com/tr/q/%s-ceviri-nedir" "$*" ;; en) sdcvDict "WordNet® 3.0 (En-En)" "$*" ;; fren) sdcvDict "French - English" "$*" ;; ruen) sdcvDict "Russian-English full dictionary" "$*" ;; *) printf "No dictionary as %s found.\nusage: soz dictname [search term]\n" "$dict" ;; esac