[recovery mode] Переводим с помощью Яндекс

В процессе возни с xfce4-dict набрёл на хабрастатью почти трёхлетней давности: «Перевод выделенного текста с любого языка на русский». Решение оказалось очень простым, но что-то не заладилось у меня с гуглопереводчиком. То ли потому, что очень быстро он начал выдавать капчу, то ли потому, что денег хочет… Разбираться было лень, поэтому просто переписал исходный скрипт с использованием API Яндекс.Перевода.Для начала нужно залогиниться в Яндекс и получить ключ. Ключ генерируется моментально, никто никаких допросов не устраивает и ничего ждать не надо. Само собой, перед этим надо прочитать и принять пользовательское соглашение.Ну, а дальше всё просто:

#!/bin/sh

key=«вставляем сюда свой ключ API» text=»$(echo $(xsel -o) | sed «s/[\»\'<>]//g»)» translate=»$(wget -qO — «https://translate.yandex.net/api/v1.5/tr.json/translate? key=$key&text=$text&lang=ru»)» notify-send -u critical »$text» »$(echo $translate | sed 's/.*\[\»\(.*\)\»\].*/\1/')» Конечно, можно сделать всё куда красивей: и со вставкой перевода в буфер обмена, и с красивым парсером ответа (Яндекс может отдавать как JSON[P], так и XML), и с более вдумчивой предварительной обработкой текста, и с бОльшими фрагментами в POST, и с прочими радостями. Но это уже дело вкуса. А подробное обсуждение юзкейсов и разные реализации есть в исходной статье.

UPD:

sperson подсказывает, что есть trans. По сути это продвинутая обёртка для того же гуглтранслейта, которая и препроцессинг текста делает, и постпроцессинг, и прокси позволяет задавать, и много чего полезного. Так что если устраивает гугл, то всё ещё проще:

#!/bin/sh

notify-send -u critical »$(echo $(xsel -o) | trans -no-ansi -l ru)» На выходе 5abaecf7b9c446ccbbbc54ada4db7dcd.png8c99b24c00314e72bf7972df50e7fd7f.png

© Habrahabr.ru