All pastes #131503 Raw Edit

blk1d - getfilmes.sh

public shellscript v1 · immutable
#131503 ·published 2006-08-14 15:10 UTC
rendered paste body
#!/bin/bash## Este script depende dos pacotes:#  - links >= 2.1pre18 (web-browser modo texto)#  - awk/gawk#  - coreutils#  - email (cleancode) -> http://email.cleancode.org#   \_ necessario somente se usar a opcao de envio de email## Escrito por: Flavio do Carmo Junior aka blk1d# e-Mail: billpp@gmail.com## Configuracoes do usuario# Se voce possuir um servidor proxy para HTTP na rede, ajuste-o abaixo# Use "IP:PORTA"#HTTP_PROXY="192.168.0.1:3128"# Ajuste a variavel EMAIL para enviar por e-mail ou somente exibir no console# Use ON|OFFEMAIL="ON"ENDMAIL="carmo.flavio@gmail.com"SUBJECT="Filmes by getfilmes.sh"# ONCONSOLE e a variavel que controla se o resultado sera exibido no# console de consulta. Voce pode tanto exibir quanto enviar e-mail# como so exibir, ou so enviar o e-mail (ideal para cron)# Use ON|OFFONCONSOLE="ON"# Trazer sempre o filme da Sessao da Tarde do dia# No caso de fim de semana essa opcao e ignorada# Use ON|OFFSESSAO_TARDE="ON"# O mapa de caracteres que deseja abrir a pagina - se nao souber deixe-o padraoCODEPAGE="iso-8859-1"############ GLOBO ##############TELAQUENTE="http://redeglobo.globo.com/TVG/0,,TV3677-4479-$(date +%d%m%Y),00.html"SESSTARDE="http://redeglobo.globo.com/TVG/0,,TV3673-4475-$(date +%d%m%Y),00.html"TEMPMAXIMA="http://redeglobo.globo.com/TVG/0,,TV3681-4480-$(date +%d%m%Y),00.html"DOMMAIOR="http://redeglobo.globo.com/TVG/0,,TV3668-3914-$(date +%d%m%Y),00.html"############ RECORD ############TELAMAX="http://www.rederecord.com.br/programas/recordfilmes/interna.asp?sessao=4&filme=165"CINEAVENT="http://www.rederecord.com.br/programas/recordfilmes/interna.asp?sessao=1&filme="CINEMAIOR="http://www.rederecord.com.br/programas/recordfilmes/interna.asp?sessao=2&filme=220"SESSESPECIAL="http://www.rederecord.com.br/programas/recordfilmes/interna.asp?sessao=3&filme=219"SUPTELA="http://www.rederecord.com.br/programas/recordfilmes/interna.asp?sessao=0&filme=218"############  SBT  ##############Toda Noite No Cinema (terca e sexta)TERCA="http://www.sbt.com.br/filmes/filme.asp?txt1_cod=23&img=noite_cinema&txt1_dia=3"SEXTA="http://www.sbt.com.br/filmes/filme.asp?txt1_cod=23&img=noite_cinema&txt1_dia=6"#Cine Belas Artes (Sabado)SABADO="http://www.sbt.com.br/filmes/filme.asp?txt1_cod=2&img=belasartes&txt1_dia=null"#Oito e Meia no Cinema (Domingo)DOMINGO1="http://www.sbt.com.br/filmes/filme.asp?txt1_cod=18&img=cine_especial&txt1_dia=null"#Domingo Especial (Domingo)DOMINGO2="http://www.sbt.com.br/filmes/filme.asp?txt1_cod=21&img=domingo&txt1_dia=null"# Daqui pra baixo o script NAO DEVE precisar de nenhuma alteracao# Salvo casos de alteracoes nos lay-outs/estrutura dos sites# Tratamento do scriptexport http_proxy=$HTTP_PROXY HTTP_PROXYTMPDATE="$(date +%w)"FILE="$(tempfile)"LINKS="links -no-g -dump -html-assume-codepage $CODEPAGE -codepage $CODEPAGE"function sbt_filmes(){        MAILFILE="$(tempfile)"        LINHA="$(egrep -n "Filmes" $FILE | cut -d: -f1)"        let LINHA+=3        NUMLINHAS="$(($(wc -l $FILE | awk '{print $1}')-7))"        cut -c18- "$FILE" | awk "NR>=$LINHA && NR<=$NUMLINHAS" >$MAILFILE        CANAL="SBT"        mailme}function globo_filmes(){        MAILFILE="$(tempfile)"        LINHA="$(grep -n "Todos os sites" $FILE | cut -d: -f1)"        let LINHA+=2        NUMLINHAS="$(($(tail +$LINHA $FILE | egrep -n "^$|^ +$" | head -1 | cut -d: -f1) + $LINHA))"        awk "NR>=$LINHA && NR<=$NUMLINHAS" $FILE > $MAILFILE        CANAL="GLOBO"        mailme}function record_filmes(){        MAILFILE="$(tempfile)"        LINHA="$(egrep -n "^$|^ +$" $FILE | head -1 | cut -d: -f1)"        let LINHA+=1        NUMLINHAS="$(($(tail +$LINHA $FILE | egrep -n "^$|^ +$" | head -1 | cut -d: -f1) + $LINHA))"        cut -c6-65 $FILE | awk "NR>=$LINHA && NR<=$NUMLINHAS" > $MAILFILE        CANAL="RECORD"        mailme}function mailme(){        sed -i "1 i****************** $CANAL *****************" $MAILFILE        sed -i "$ a****************** $CANAL *****************" $MAILFILE        if [ "$EMAIL" == "ON" ] || [ "$EMAIL" == "on" ] && [ ! -e /tmp/getfilmes.lock ]; then                email -s \\" $SUBJECT \\" $ENDMAIL < $MAILFILE        fi        if [ "$ONCONSOLE" == "ON" ] || [ "$ONCONSOLE" == "on" ]; then                cat $MAILFILE        fi        rm -f $FILE 2>/dev/null        rm -f $MAILFILE 2>/dev/null}function sessao_da_tarde(){        if [ "$SESSAO_TARDE" == "ON" ] || [ $SESSAO_TARDE == "on" ]; then                if [ "$TMPDATE" -le "$HOJE" ]; then                        CALC="$(($HOJE - $TMPDATE))"                else                        CALC="$((7 - $TMPDATE + $HOJE))"                fi                SESSTARDE="http://redeglobo.globo.com/TVG/0,,TV3673-4475-$(date --date="$CALC days" +%d%m%Y),00.html"                $LINKS $SESSTARDE > $FILE                globo_filmes        fi}HOJE="${1:-$TMPDATE}"while [ -n "$HOJE" ]; do{        case "$HOJE" in                1) # segunda feira                        if [ $TMPDATE != 1 ]; then                                CALC="$((8 - $TMPDATE))"                                TELAQUENTE="http://redeglobo.globo.com/TVG/0,,TV3677-4479-$(date --date="$CALC days" +%d%m%Y),00.html"                        fi                        $LINKS $TELAQUENTE > $FILE                        globo_filmes                        sessao_da_tarde                        $LINKS $CINEAVENT > $FILE                        record_filmes                        ;;                2) # terca feira                        $LINKS $TERCA > $FILE                        sbt_filmes                        $LINKS $CINEAVENT > $FILE                        record_filmes                        sessao_da_tarde                        ;;                3) # quarta feira                        $LINKS $SESSESPECIAL > $FILE                        record_filmes                        $LINKS $CINEAVENT > $FILE                        record_filmes                        sessao_da_tarde                        ;;                4) # quinta feira                        $LINKS $CINEMAIOR > $FILE                        record_filmes                        $LINKS $CINEAVENT > $FILE                        record_filmes                        sessao_da_tarde                        ;;                5) # sexta feira                        $LINKS $SEXTA > $FILE                        sbt_filmes                        sessao_da_tarde                        $LINKS $CINEAVENT > $FILE                        record_filmes                        ;;                6) # sabado                        $LINKS $SABADO > $FILE                        sbt_filmes                        $LINKS $SUPTELA > $FILE                        record_filmes                        ;;                0|7) # domingo                        $LINKS $DOMINGO1 > $FILE                        sbt_filmes                        $LINKS $DOMINGO2 > $FILE                        sbt_filmes                        if [ $TMPDATE != 0 ] || [ $TMPDATE != 7 ]; then                                CALC="$((7 - $TMPDATE))"                                TEMPMAXIMA="http://redeglobo.globo.com/TVG/0,,TV3681-4480-$(date --date="$CALC days" +%d%m%Y),00.html"                                DOMMAIOR="http://redeglobo.globo.com/TVG/0,,TV3668-3914-$(date --date="$CALC days" +%d%m%Y),00.html"                        fi                        $LINKS $TEMPMAXIMA > $FILE                        globo_filmes                        $LINKS $DOMMAIOR > $FILE                        globo_filmes                        $LINKS $TELAMAX > $FILE                        record_filmes                        ;;                semanal)                        echo -e "Aguarde, coletando informacoes...\n"                        touch /tmp/getfilmes.lock                        SEMANAL="$(tempfile)"                        $0 1 2 3 4 5 6 7 >> $SEMANAL                        email -s \\" Filmes da Semana \\" $ENDMAIL < $SEMANAL                        rm -f $SEMANAL                        rm -f /tmp/getfilmes.lock                        ;;                *)                        echo -e "Uso do script: $0 [dia] [dia] [dia]...\n"                        echo "[dia]  -> O dia da semana que deseja consultar"                        echo "no caso de em branco sera consultado o dia atual."                        echo "          0 ou 7  -> Domingo"                        echo "          1 ou    -> Segunda Feira"                        echo "          2 ou    -> Terca Feira"                        echo "          3 ou    -> Quarta Feira"                        echo "          4 ou    -> Quinta Feira"                        echo "          5 ou    -> Sexta Feira"                        echo "          6 ou    -> Sabado"                        echo "                semanal -> Envia os filmes da semana para o email"                        exit 1                        ;;        esac        shift        HOJE="$1"}done