summaryrefslogtreecommitdiff
path: root/bin/extra/trl
diff options
context:
space:
mode:
Diffstat (limited to 'bin/extra/trl')
-rwxr-xr-xbin/extra/trl101
1 files changed, 22 insertions, 79 deletions
diff --git a/bin/extra/trl b/bin/extra/trl
index ee42040..55d65ee 100755
--- a/bin/extra/trl
+++ b/bin/extra/trl
@@ -1,20 +1,8 @@
#!/bin/sh
-# prints on stderr
-log () { >&2 echo "$@"; }
+# Translate words using http://context.reverso.net and scraping the answers
+# with 'pup' and 'curl'.
-help ()
-{
- >&2 cat <<-EOF
- h help
- l clear output
- q quit
-
- i invert languages
- p select primary
- s select secondary
- EOF
-}
# returns available languages
languages () {
cat <<-EOF
@@ -46,70 +34,25 @@ languages () {
EOF
}
-# translates a word
-# $1: primary language
-# $2: secondary language
-# $3: word to translate
-translate ()
-{
- curl -s "https://context.reverso.net/translation/$1-$2/$3" \
- --compressed \
- -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0' \
- -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' \
- -H 'Accept-Language: en-US,en;q=0.5' \
- -H 'Accept-Encoding: gzip, deflate, br' |
- pup 'a.link_highlighted em text{}' |
- sed 's/.*/\L&/' |
- sort | uniq | sed 's/.*/ &/'
-}
-
-# prints the current language
-current_language ()
-{
- log " current: $primary-$secondary"
-}
-
-select_language ()
-{
- tmp="$(languages | fzf)"
- [ "$tmp" ] && [ "$tmp" != "$primary" ] && [ "$tmp" != "$secondary" ] &&
- eval "$1=\"$tmp\""
- current_language
-}
-
-# set default languages
-primary=french
-secondary=dutch
-
-
-main ()
-{
- current_language
- while true
- do
- log -n '>'
- read -r prompt
- test $? -eq 1 && exit 0 # quit on ctrl-d
- case "$prompt" in
- q) break ;;
- l) clear ;;
- i) tmp="$secondary"; secondary="$primary"; primary="$tmp"
- current_language ;;
- h) help ;; # TODO
- p) select_language primary ;;
- s) select_language secondary ;;
- '') ;;
- *) translate "$primary" "$secondary" "$prompt" ;;
- esac
- done
-}
-
-
-if [ "$1" = "--help" ] || [ "$1" = "-h" ]
+if [ -z "${word:=$1}" ]
then
- log "usage: trl"
- help
- exit
+ >&2 printf '>'
+ word="$(head -n1)"
fi
-
-main
+[ "$word" ] || exit 1
+
+primary="$(languages | fzf --prompt="from:")"
+[ "$primary" ] || exit 1
+
+secondary="$(languages | fzf --prompt="to:")"
+[ "$secondary" ] || exit 1
+
+curl -s "https://context.reverso.net/translation/$primary-$secondary/$word" \
+ --compressed \
+ -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0' \
+ -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' \
+ -H 'Accept-Language: en-US,en;q=0.5' \
+ -H 'Accept-Encoding: gzip, deflate, br' |
+ pup 'a.link_highlighted em text{}' |
+ sed 's/.*/\L&/' |
+ sort | uniq | sed 's/.*/ &/'