All pastes #146501 Raw Edit

getfilmes.sh - blk1d

public shellscript v1 · immutable
#146501 ·published 2006-08-23 17:26 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 _arroba_ gmail _ponto_ 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# UNICO envia um unico email com todos os filmes do dia, por padrao pra cada# filme e enviado um e-mail, caso EMAIL=ON# Use ON|OFF|UNICOEMAIL="UNICO"EMAIL="OFF"# Voce pode definir mais de um destinatario separando por virgula# exemplo: dest1@abc.com,dest2@abc.com,dest3@abc.com# desde que sejam do mesmo dominioENDMAIL="meuemail@servidor.com.br"SUBJECT="Filmes by getfilmes.sh"# Ajustando as configuracoes de PATH. Caso seu programa email do cleancode# esteja fora do PATH, adicione o local dele aqui.PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin"# 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="windows-1250"############ 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="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="SESSESPECIAL="http://www.rederecord.com.br/programas/recordfilmes/interna.asp?sessao=3&filme="SUPTELA="http://www.rederecord.com.br/programas/recordfilmes/interna.asp?sessao=0&filme="############  SBT  ##############Cine espetacular e Tela de Sucessos (terca e sexta)TERCA="http://www.sbt.com.br/filmes/cineespetacular.asp"SEXTA="http://www.sbt.com.br/filmes/teladesucessos.asp"#Cine Belas Artes (Sabado)SABADO="http://www.sbt.com.br/filmes/cinebelasartes.asp"#Oito e Meia no Cinema (Domingo)DOMINGO1="http://www.sbt.com.br/filmes/8emeia.asp"#Domingo Especial (Domingo)DOMINGO2="http://www.sbt.com.br/filmes/domingoespecial.asp"# 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_PROXY PATHTMPDATE="$(date +%w)"FILE="$(tempfile)"LINKS="links -no-g -dump -assume-codepage $CODEPAGE -html-assume-codepage $CODEPAGE -codepage $CODEPAGE"LINKS_SBT="links -html-tables 0 -html-frames 0 -no-g -dump -assume-codepage $CODEPAGE -html-assume-codepage $CODEPAGE -codepage $CODEPAGE"function error_call(){cat > $MAILFILE <<EOF                A emissora ainda nao atualizou seu site                com o conteudo da programacao referente                a este programa nesta data.EOF}function sbt_filmes(){        MAILFILE="$(tempfile)"        LINHA="$(egrep -n "Ficha\ T.cnica" $FILE | cut -d: -f1)"        if [ -z "$LINHA" ]; then                error_call        else                MAILFILE="$(tempfile)"                NUMLINHAS="$(($(wc -l $FILE | awk '{print $1}')-6))"                cat "$FILE" | awk "NR>=$LINHA && NR<=$NUMLINHAS" >$MAILFILE        fi        CANAL="SBT"        mailme}function globo_filmes(){        MAILFILE="$(tempfile)"        LINHA="$(grep -n "Nacionalidade" $FILE | cut -d: -f1)"        if [ -z "$LINHA" ]; then                error_call        else                let LINHA-=4                NUMLINHAS="$(($(tail +$LINHA $FILE | egrep -n "^$|^ +$" | head -1 | cut -d: -f1) + $LINHA))"                awk "NR>=$LINHA && NR<=$NUMLINHAS" $FILE > $MAILFILE        fi        CANAL="GLOBO"        mailme}function record_filmes(){        MAILFILE="$(tempfile)"        LINHA="$(egrep -n "Produ..o:" $FILE | cut -d: -f1)"        if [ -z "$LINHA" ]; then                error_call        else                let LINHA-=2                NUMLINHAS="$(($(wc -l $FILE | awk '{print $1}') - 3))"                cut -c6-65 $FILE | awk "NR>=$LINHA && NR<=$NUMLINHAS" > $MAILFILE        fi        CANAL="RECORD"        mailme}function mailme(){        GETTMPDIR="/tmp/.getfilmes.tmp"        ONEMAIL="$GETTMPDIR/FILEMAIL.txt"        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" ] || [ -e /tmp/getfilmes.lock ]; then                cat $MAILFILE        fi        mkdir -p $GETTMPDIR        cat $MAILFILE >> $ONEMAIL        rm -f $FILE 2>/dev/null        rm -f $MAILFILE 2>/dev/null}function onemail(){        if [ "$EMAIL" == "UNICO" ] || [ "$EMAIL" == "unico" ] && [ ! -e  "/tmp/getfilmes.lock" ]; then                email -s \\" $SUBJECT \\" $ENDMAIL < $ONEMAIL        fi        rm -rf $GETTMPDIR 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                        onemail                        ;;                2) # terca feira                        $LINKS_SBT $TERCA > $FILE                        sbt_filmes                        sessao_da_tarde                        onemail                        ;;                3) # quarta feira                        $LINKS $SESSESPECIAL > $FILE                        record_filmes                        sessao_da_tarde                        $LINKS $CINEAVENT > $FILE                        record_filmes                        onemail                        ;;                4) # quinta feira                        $LINKS $CINEMAIOR > $FILE                        record_filmes                        sessao_da_tarde                        onemail                        ;;                5) # sexta feira                        $LINKS_SBT $SEXTA > $FILE                        sbt_filmes                        sessao_da_tarde                        onemail                        ;;                6) # sabado                        $LINKS_SBT $SABADO > $FILE                        sbt_filmes                        $LINKS $SUPTELA > $FILE                        record_filmes                        onemail                        ;;                0|7) # domingo                        $LINKS_SBT $DOMINGO1 > $FILE                        sbt_filmes                        $LINKS_SBT $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                        onemail                        ;;                semanal)                        echo -e "Aguarde, coletando informacoes..."                        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