#!/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