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 87 88 89 90 91 92 93 94 95
|
# ----------------------------------------------------------------------------
# http://google.com
# Pesquisa no Google diretamente pela linha de comando.
# Uso: zzgoogle [-n <número>] palavra(s)
# Ex.: zzgoogle receita de bolo de abacaxi
# zzgoogle -n 5 ramones papel higiênico cachorro
#
# Autor: Aurelio Marinho Jargas, www.aurelio.net
# Desde: 2003-04-03
# Versão: 3
# Licença: GPL
# Requisitos: zztrim
# ----------------------------------------------------------------------------
# DESATIVADA: 2016-11-17 Google bloqueia robôs (issue #390)
zzgoogle ()
{
zzzz -h google "$1" && return
local padrao url
local limite=10
# Opções de linha de comando
if test "$1" = '-n'
then
limite="$2"
shift
shift
zztool -e testa_numero "$limite" || return 1
fi
# Verificação dos parâmetros
test -n "$1" || { zztool -e uso google; return 1; }
# Prepara o texto a ser pesquisado
padrao=$(echo "$*" | sed "$ZZSEDURL")
test -n "$padrao" || return 0
# Pesquisa, baixa os resultados e filtra
case $ZZBROWSER in
lynx)
# O Google condensa tudo em um única longa linha, então primeiro é preciso
# inserir quebras de linha antes de cada resultado. Identificadas as linhas
# corretas, o filtro limpa os lixos e formata o resultado.
url='http://www.google.com.br/search'
zztool source "$url?q=$padrao&num=$limite&ie=UTF-8&oe=UTF-8&hl=pt-BR" |
sed 's/<p>/\
@/g' |
sed '
/^@<a href="\([^"]*\)">/!d
s|^@<a href="/url?q=||
s/<\/a>.*//
s/<table.*//
/^http/!d
s/&sa.*">/ /
# Remove tags HTML
s/<[^>]*>//g
# Restaura os caracteres especiais
s/>/>/g
s/</</g
s/"/"/g
s/ / /g
s/&/\&/g
# Restaura caracteres url encoded
s/%3F/?/g
s/%3D/\=/g
s/%26/\&/g
s/\([^ ]*\) \(.*\)/\2\
\1\
/'
;;
*)
# Com outros navegadores o google tem problemas
# Então usa-se outro site de busca: o duckduckgo.com
# Que perminte usar normalmente com o dump.
limite=$((limite+1))
url='https://duckduckgo.com'
zztool dump "${url}/?q=$padrao" |
sed -n '/ [ []\{0,2\}Search[] ]\{0,2\}$/,/ [ []\{0,2\}Search[] ]\{0,2\}$/ {
//d
/Next Page >/d
/^ *$/d
/No results.$/d
p
}' |
zztrim -r |
sed -n "/^ *1\. /,/^ *${limite}\. /{ /^ *${limite}\. /d; p; } "
;;
esac
}
|