Linux для всех / [Из песочницы] Яндекс перевод на bash с использованием zenity

в 11:48, , рубрики: bash, yandex translate api, zenity, метки: , ,

После прочтения двух статей о zenity подумал что неплохо было бы попробовать и себя в этом, только не мог найти подходящей для этого задачи, а просто ради интереса строить окна с кнопками уже надоело. И так, к Вашему сведению предоставляется мой первый не бесполезный баш скрипт с использованием zenity.

Пользуюсь в firefox прекрасным дополнением для перевода текста в контекстном меню под названием My-translator, он легкий, удобный и мне нравится. А на днях захотел я подобную фичу и в своем линуксе, руки есть, голова тоже, выбор упал на bash + zenity + wget + Yandex.Translate.

Первым делом нужно узнать есть ли у яндекса api, на сайте не нашел подобный раздел (может плохо искал?), google показал ссылки один блог где был пример использования api для перевода с помощью ajax. Воспользовавшись сервисом hurl я быстро понял что нужно передавать три основных параметра: text, lang и srv. Text должен содержать наш текст, lang родной язык и язык для перевода в формате «en-ru», а параметр srv указывает на то что мы хотим воспользоваться переводом — «tr-text». С этим легко и понятной, идем дальше.

Скрипт получился маленьким и эффективным, по крайней мере для меня.

#!/bin/bash
# Translate text with Yandex API
_zenity="/usr/bin/zenity"
_out="/tmp/translate.output.$$"

text=$(${_zenity} --title "Enter text" --entry --entry-text="$(xclip -o)" )

if [ $? -eq 0 ]
then
wget -O ${_out} translate.yandex.ru/tr.json/translate --post-data="srv=tr-text&lang=en-ru&text=$text"
sed -i 's/"//g' ${_out}
${_zenity} --width=600 --height=240
--title "Translation for $text"
--text-info --filename=${_out}
/bin/rm ${_out}
fi

В bash не силен, но гуглить умею.
В 6-ой строке я использовал утилиту xclip для того чтобы можно было просто выделить нужный текст и нажать горячие клавиши и появится поле уже с вставленным в него текстом, удобно как ни как. Есть ли еще способы сделать http запрос с bash скрипта я не знаю, но wget с этим отлично справляется.
Вот собственно и все, далее добавляем горячие клавиши на запуск скрипта и будет Вам счастье. Буду рад если кому-нибудь поможет.

Автор: zviryatko


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js