Яндекс-Перевод в терминале через Java

от автора

Используя API переводчика написал для себя простую программу для перевода слов и фраз, и чтобы из любого места работало. Хотел использовать curl, но непонятно почему получал ошибку что такого языка нет.

Теперь вместо скучного, а иногда медленного, а иногда такого ярко-белого нового таба с лишней информацией пишу в терминале trans hello и получаю перевод на русский, а если trans привет — на английский. Разумеется можно вводить и фразы, в кавычках. Работает быстренько.

import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection;  public class YandexTranslate {     public static void main(String[] args) throws IOException {         System.out.println(translate("ru", args[0]));     }      private static String translate(String lang, String enteredText) throws IOException {         String textEscaped = enteredText.replace(" ", "%20");         String url = "https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20150402T173446Z.82a90fe78ca2aeaf.a3bd7c7a0f72b260e28f5d92e4f242cf6ba189d3&lang="                 + lang + "&text=" + textEscaped;         URLConnection connection = null;         try {             connection = new URL(url).openConnection();         } catch (ArrayIndexOutOfBoundsException e) {             System.out.printf("No text for translate");         }         InputStream response = connection.getInputStream();         String json = new java.util.Scanner(response).nextLine();         int start = json.indexOf("[");         int end = json.indexOf("]");         String translated = json.substring(start + 2, end - 1);         if (translated.equals(enteredText)) { 	    // if return equal of entered text - we need change direction of translation             return translate("en", enteredText);         } else return translated;     } } 

Чтобы перевод работал в любой директории, нужно в /usr/bin положить .class-файл и trans.sh для его вызова:

#!/bin/bash #!/bin/bash if [ $# -eq 0 ]   then     echo "Enter text for translate"     exit 1; fi java -classpath /usr/bin/ YandexTranslate "$1" 

И сделать его исполняемым: sudo chmod +x trans.sh

Если что — опубликовано на Гитхабе.

ссылка на оригинал статьи http://habrahabr.ru/post/261259/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *