Подскажите пожалуйста решение...
Требуется чтобы вывод с текстового файла переводился online переводчиком(желательно google) и сохраняло вывод перевода в текстовый файл. Чтобы это делало в консоле . каким образом это вообще возможно осуществить?
[Решено] Нужно решение средствами bash
каким образом это вообще возможно осуществить?
вы не поверите: man wget. Он умеет не только принимать, но и отправлять запросы.
Можете помочь практическим советом для использования ? ...чтобы работало именно с переводом google
Я немного не пойму как именно wget отправит и получит этот же ...перевод
Вообще тот же самый гугл сила=)
если туда ввести
wget translate.google.com
то получим вторую ссылку:
http://www.linuxquestions.org/questions/programming-9/bash-no-x-using-google-translate-convert-txt-files-translate-720376/#post3530546
ОООооо... то что надо вроде. Щас попробую. Спасибо
Слишком навернуто
В таком случае рекомендую смотреть в сторону wget как было сказанно а если точнее методов post request
P.S будет время мб сваяю чё нить деревянное...
Вообщем помучал так выглядеть будет примерно так:
#!/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 текст:
Hello how are you.Вызывается типа
./translate.sh test.txt en ruдалее дело за малым из получившийся html вырезать нужное место)
Ни каких проверок я естесно не писал=)
Не получается у меня в полученом html файле найти переведенное слово, может c --user-agent что то ?
да согласен чёт нефурычит=))
Вообщем почитав я понял что wget не катит=) похоже надо использовать curl побробнее можно почитать:
http://research.google.com/university/translate/docs.html
Секцию
Simple Translations
Я так понял что curl не получиться реализовать в командной строке? Нужно чтобы именно с командной строки формировало перевод в файл.
Используйте google API.
Пример:
#!/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";
Пример запуска:
$ ./googletranslate.sh "hello world" en ru
привет мир
Вам остаётся лишь переделать ввод и вывод на файлы.
Спасибо! То что надо!
Закрыто как решенное