Pull to refresh

Яндекс перевод на bash с использованием zenity

Reading time2 min
Views4.7K
После прочтения двух статей о 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} http://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 с этим отлично справляется.
Вот собственно и все, далее добавляем горячие клавиши на запуск скрипта и будет Вам счастье. Буду рад если кому-нибудь поможет.
Tags:
Hubs:
Total votes 11: ↑8 and ↓3+5
Comments12

Articles