Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # lista-orkut
- # Arkanon <arkanon@lsd.org.br>
- # 2014/10/01 (Wed) 04:58:45 (BRT)
- # Lista todas as comunidades com nome iniciando em determinada letra
- # em todas as páginas do finado orkut <http://orkut.google.com>
- # para aquela letra.
- #
- # Ter acesso à listagem completa é, provavelmente, a única forma
- # razoável de achar o amado antro social de antanho :-p, já que a
- # listagem não está em ordem alfabética e para cada letra existem
- # MILHARES de comunidades.
- #
- # O arquivo .var conterá
- # - o número de páginas de listagem processadas
- # - a quantidade de comunidades encontradas
- # - a hora de início do processamento
- # - o tempo de processamento até ser interrompido ou finalizado
- # - o código da página seguinte a ser processada (que pode ser
- # usado como argumento para reinício em caso de interrupção)
- #
- # No caso da letra 'e', foram encontradas 1.196.602 comunidades em
- # 11.966 páginas em 2h de download e processamento.
- #
- # O ${codigo} retornado é usado na url
- # <http://orkut.google.com/c${codigo}.html>
- if [ $# = 0 ]
- then
- cat << EOT
- Use: $(basename $0) <início>
- início := letra inicial do nome da comunidade
- ou
- codigo de pagina de listagem (\$proxima)
- EOT
- exit
- fi
- letra=${1,,} # minúscula
- proximo=$letra
- pagina=1
- prefixo="orkut"
- echo "# vim: ts=50" > $prefixo-$letra.txt
- while [ "$proximo" ]
- do
- url="http://orkut.google.com/l-$proximo.html"
- src=$(lynx -source $url)
- echo "$src" \
- | sed -r 's/></>\n</g' \
- | grep typoSectionTitleFont \
- | grep -Eo -e "c[0-9]+" -e ">[^<]+" \
- | tr "\n" "\t" \
- | sed -r "s/[\t]*\t>/§/g;s/^c//g;s/\tc/\n/g;s/\t$/\n/" \
- | awk -F§ '{print$2"\t"$1}' \
- | tee -a $prefixo-$letra.txt
- proximo=$(
- echo "$src" \
- | sed -r 's/></>\n</g' \
- | grep "next " \
- | uniq \
- | grep -Eo -- "-[^.]+" \
- | cut -d- -f2
- )
- cat << EOT | tee $prefixo-$letra.var
- pagina=$pagina
- listadas=$(($(wc -l $prefixo-$letra.txt | cut -d\ -f1)-1))
- inicio=$(ps ho stime -p $$)
- decorrido=$(ps ho etime -p $$ | tr -d " ")
- proxima=$proximo
- EOT
- ((pagina++))
- done
- # EOF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement