#!/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|UNICO EMAIL="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 dominio ENDMAIL="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|OFF ONCONSOLE="ON" # Trazer sempre o filme da Sessao da Tarde do dia # No caso de fim de semana essa opcao e ignorada # Use ON|OFF SESSAO_TARDE="ON" # O mapa de caracteres que deseja abrir a pagina - se nao souber deixe-o padrao CODEPAGE="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 script export http_proxy=$HTTP_PROXY HTTP_PROXY PATH TMPDATE="$(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 -codepag e $CODEPAGE" function error_call() { cat > $MAILFILE <=$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