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 ;; 2) # terca feira $LINKS $TERCA > $FILE sbt_filmes sessao_da_tarde ;; 3) # quarta feira $LINKS $SESSESPECIAL > $FILE record_filmes sessao_da_tarde ;; 4) # quinta feira $LINKS $CINEMAIOR > $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