diff options
Diffstat (limited to 'bin/extra/trl')
| -rwxr-xr-x | bin/extra/trl | 101 | 
1 files changed, 22 insertions, 79 deletions
diff --git a/bin/extra/trl b/bin/extra/trl index ee42040..bd4c2c5 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)" +[ "$primary" ] || exit 1 + +secondary="$(languages | fzf)" +[ "$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/.*/  &/'  | 
