quarta-feira, 28 de maio de 2008

Pesquisando nos Grupos do Yahoo

Meu amigo MrBits me deu essa grande ideia:

#!/bin/bash
QTDE=20
CHARSET=UTF-8
GROUP=shell-script

while getopts g:c:q: OPTION ; do
case $OPTION in
g) GROUP=$OPTARG ;;
c) CHARSET=$OPTARG ;;
q) QTDE=$OPTARG ;;
esac
done

shift $(($OPTIND -1))

SEARCH="$@"

if [ -z "$SEARCH" ]; then
echo "Usage: $(basename $0) [-q qtde] [-g grupo] [-c charset] search"
exit 1
fi

BASEURL="http://br.groups.yahoo.com/group"
URL="${BASEURL}/${GROUP}/msearch?submit=OK&charset=${CHARSET}&cnt=${QTDE}&query=${SEARCH// /+}"
SEDCMD="/message/!d;/${GROUP}/!d;/.*[0-9]/!d;s#/group#${BASEURL}#g;s/<[^>]*span>//g;s/$/<br \/>/"

LYNXOPT="-dump -force_html -assume_charset=${CHARSET}"
lynx $LYNXOPT <( curl -b /tmp/cookie$$ -sL "${URL}" | sed "${SEDCMD}" )


Vejamos em uso:
$ ./find.sh              
Usage: find.sh [-q qtde] [-g grupo] [-c charset] search

$ ./find.sh -q 10 getopts # procurando por getopts limitando a 10 registros
[1]Re: [shell-script] Script de busca de mensagens
[2]Re: [shell-script] Re: script iterativo / passo a passo
[3]Re: [shell-script] Script de Backup
[4]Re: [shell-script] Script de Backup
[5]Re: [shell-script] Script de Backup
[6]Re: [shell-script] Script de Backup
[7]Re: [shell-script] Echo e executa: superecho
[8]Re: [shell-script] testar se parametro $1 foi passado
[9]Re: [shell-script] Echo e executa: superecho
[10]Re: [shell-script] testar se parametro $1 foi passado

References

1. http://br.groups.yahoo.com/group/shell-script/message/26373
2. http://br.groups.yahoo.com/group/shell-script/message/26204
3. http://br.groups.yahoo.com/group/shell-script/message/26078
4. http://br.groups.yahoo.com/group/shell-script/message/26076
5. http://br.groups.yahoo.com/group/shell-script/message/26075
6. http://br.groups.yahoo.com/group/shell-script/message/26072
7. http://br.groups.yahoo.com/group/shell-script/message/25742
8. http://br.groups.yahoo.com/group/shell-script/message/25720
9. http://br.groups.yahoo.com/group/shell-script/message/25719
10. http://br.groups.yahoo.com/group/shell-script/message/25718


Divertido, não? o default é procurar no grupo shell-script do yahoo, mas ele pode investigar em qualquer um.

Valeu Mr.Bits!!

6 comentários:

Marcelo Martins disse...

Tiago, tu ta ficando cada vez pior cara. Já pensou em dar um tempo e programar um pouco em Visual Basic?


hehe.. muito bom!

Tiago Peczenyj disse...

VB ? NUNCA!!!

Mas ja fiz coisas com VBScript... :$

Roger Leite disse...

Putz Tiago ! Você tá ficando muito louco mesmo, deve ser o sol ai do Rio ... não é possível !

Estes comandos de sed são de arrepiar, um dia ainda vou entender isso "nativo".

flw e sucesso!

Tiago Peczenyj disse...

Mas é facil, Roger!

/padrão/!d -> apaga *todas* as linhas que *não* casam com o padrão

s/padrão/substituição/g -> substitui, globalmente, o padrão pela substituição

s#xxx#yyy#g -> mesma coisa, util para não ter que escapar o caracter /

Guilherme Chapiewski disse...

\o/

É por isso que bash é a melhor coisa de todo o universo!!!

Tiago Peczenyj disse...

Hahaha... te amarrou, gc?

Podes usar pra pesquisar no rioguj ;-)