LinuxForum.Fans
Тема

[Решено] Нужно решение средствами bash

Автор: astalavista 12 сообщений 3971 просмотров 🔒 закрыта
#22736

Подскажите пожалуйста решение...
Требуется чтобы вывод с текстового файла переводился online переводчиком(желательно google) и сохраняло вывод перевода в текстовый файл. Чтобы это делало в консоле . каким образом это вообще возможно осуществить?

#22738
astalavista написал:
каким образом это вообще возможно осуществить?

вы не поверите: man wget. Он умеет не только принимать, но и отправлять запросы.

#22758

Можете помочь практическим советом для использования ? ...чтобы работало именно с переводом google
Я немного не пойму как именно wget отправит и получит этот же ...перевод

#22772

ОООооо... то что надо вроде. Щас попробую. Спасибо

Слишком навернуто

#23129

В таком случае рекомендую смотреть в сторону wget как было сказанно а если точнее методов post request
P.S будет время мб сваяю чё нить деревянное...
Вообщем помучал так выглядеть будет примерно так:

text
#!/bin/bash
text=`cat $1`
echo $text
echo "wget --user-agent=\"Mozilla/5.0 (compatible; Konqueror/3.0.0/10; Linux)\" http://translate.google.com/?js=y&prev=_t&hl=en&ie=UTF-8&layout=1&eotf=0&text=$text&sl=$2&tl=$3#"
wget --user-agent="Mozilla/5.0 (compatible; Konqueror/3.0.0/10; Linux)" http://translate.google.com/?js=y&prev=_t&hl=en&ie=UTF-8&layout=1&eotf=0&text=$text&sl=$2&tl=$3#

в файле test.txt текст:

text
Hello how are you.

Вызывается типа

text
./translate.sh test.txt en ru

далее дело за малым из получившийся html вырезать нужное место)
Ни каких проверок я естесно не писал=)

#23187

Не получается у меня в полученом html файле найти переведенное слово, может c --user-agent что то ?

#23233

да согласен чёт нефурычит=))
Вообщем почитав я понял что wget не катит=) похоже надо использовать curl побробнее можно почитать:
http://research.google.com/university/translate/docs.html
Секцию

Simple Translations
#23470

Я так понял что curl не получиться реализовать в командной строке? Нужно чтобы именно с командной строки формировало перевод в файл.

#23523

Используйте google API.
Пример:

text

#!/bin/bash

die() { echo -e "\e[1;31m$1\e[0m" >&2 exit 1 }

[ $# -lt 3 ] && die "usage: $0 text_to_translate input_languge output_languge";

input=$(echo "$1" | sed 'y/+/ /; s/%/\\x/g'); # urlencode lang_input=$2 lang_output=$3

output=$( wget -q -O- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$input&langpair=$lang_input%7C$lang_output" | egrep -o '\{"translatedText":".+"\}' | sed -r 's/^\{"translatedText":"|"\}$//g' )

[ -z "$output" ] && die "translate error" || echo "$output";

Пример запуска:

text

$ ./googletranslate.sh "hello world" en ru
привет мир

Вам остаётся лишь переделать ввод и вывод на файлы.

#23572

Спасибо! То что надо!

#23984

Закрыто как решенное

Войдите или зарегистрируйтесь, чтобы ответить.