My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# ----------------------------------------------------------------------------
# http://translate.google.com
# Google Tradutor, para traduzir frases para vários idiomas.
# Caso não especificado o idioma, a tradução será português -> inglês.
# Use a opção -l ou --lista para ver todos os idiomas disponíveis.
# Use a opção -a ou --audio para ouvir a frase na voz feminina do google.
#
# Alguns idiomas populares são:
# pt = português fr = francês
# en = inglês it = italiano
# es = espanhol de = alemão
#
# Uso: zztradutor [de-para] palavras
# Ex.: zztradutor o livro está na mesa # the book is on the table
# zztradutor pt-en livro # book
# zztradutor pt-es livro # libro
# zztradutor pt-de livro # Buch
# zztradutor de-pt Buch # livro
# zztradutor de-es Buch # Libro
# zztradutor --lista # Lista todos os idiomas
# zztradutor --lista eslo # Procura por "eslo" nos idiomas
# zztradutor --audio # Gera um arquivo OUT.WAV
#
# Autor: Marcell S. Martini <marcellmartini (a) gmail com>
# Desde: 2008-09-02
# Versão: 5
# Licença: GPLv2
# Requisitos: iconv
# ----------------------------------------------------------------------------
zztradutor ()
{
zzzz -h tradutor "$1" && return

[ "$1" ] || { zztool uso tradutor; return 1; }

# Variaveis locais
local padrao
local url='http://translate.google.com.br'
local lang_de='pt'
local lang_para='en'
local charset_de='ISO-8859-1'
local charset_para='UTF-8'
local audio_file="/tmp/$$.WAV"
local play_cmd='mpg123 -q'

case "$1" in
# O usuário informou um par de idiomas, como pt-en
[a-z][a-z]-[a-z][a-z])
lang_de=${1%-??}
lang_para=${1#??-}
shift
;;
-l | --lista)
# Uma tag por linha, então extrai e formata as opções do <SELECT>
$ZZWWWHTML "$url" |
sed 's/</\n&/g' |
sed -n '/<option value=af>/,/<option value=yi>/p' |
sed -n '1p;2,/value=af/p' | sed -n '$d;1~2p' |
sed 's/<option .*value=/ /g;s/>/: /g;s/zh-CN/cn/g'|
iconv -f $charset_de -t $charset_para |
grep ${2:-:}
return
;;
-a | --audio)
# Narrativa
shift
padrao=$(echo "$*" | sed "$ZZSEDURL")
local audio="translate_tts?ie=$charset_para&q=$padrao&tl=pt&prev=input"
$ZZWWWHTML "$url/$audio" > $audio_file && $play_cmd $audio_file && rm -rf $audio_file
return
;;
esac

padrao=$(echo "$*" | sed "$ZZSEDURL")

# Exceção para o chinês, que usa um código diferente
test $lang_para = 'cn' && lang_para='zh-CN'

# Baixa a URL, coloca cada tag em uma linha, pega a linha desejada
# e limpa essa linha para estar somente o texto desejado.
$ZZWWWHTML "$url?tr=$lang_de&hl=$lang_para&text=$padrao" |
iconv --from-code=$charset_de --to-code=$charset_para |
awk 'gsub("<[^/]", "\n&")' |
grep '<span title' |
sed 's/<[^>]*>//g'
}

Change log

r710 by aureliojargas on Mar 29, 2012   Diff
SEGURANÇA: $1 colocado entre aspas na
chamada padrão zzzz -h de todas as
funções.
Go to: 
Sign in to write a code review

Older revisions

r669 by aureliojargas on Mar 28, 2012   Diff
lint: removendo espaços inúteis. Parte
2.
r630 by itamarnet on Mar 6, 2012   Diff
zztradutir: Reescrita da listagem de
idiomas disponíveis. Ajustes no help.
r608 by kl0...@wifi.org.br on Aug 23, 2011   Diff
Função updated zztradutor -
Adicionando a opcao --audio para a
narrativa do google
All revisions of this file

File info

Size: 2933 bytes, 86 lines
Powered by Google Project Hosting