sesc.py

O sesc.py é um script em python que mostra o cardápio para o dia atual ou da semana dos restaurantes do SESC.

Ele busca um novo cardápio no site do SESC, baixa esse cardápio em PDF, processa esse arquivo e, através de expressões regulares, extrai os cardápios para cada dia. Os dados são salvos em um arquivo JSON para que novas consultas possam ser feitas instantaneamente e sem acesso a internet.

Disclaimer

Esse é um programa independente, não possuindo nenhuma relação oficial com o SESC nem tenho a permissão de uso do nome ou da marca.

Requerimentos

Como usar

Basta executar o script em linha de comando:

$ python sesc.py

Ou você pode dar permissões de execução ao script: $ chmod +x sesc.py $ ./sesc.py

Ou, se você colocou o script no path:

$ sesc.py

Se você utiliza Ubuntu, pode colocar o script em ~/bin, pois essa pasta também está no path do sistema.

Para ver as opções disponíveis utiliza a opção -h

$ sesc.py -h

Opções avançadas

Você pode configurar a execução do sesc.py através de opções na linha de comando:

Atenção: Para que funcione o recurso de aviso por e-mail, é necessário que as três opções - guser, gpass e notify - tenham sido configuradas. Além disso, gpass não é a senha normal de usuário do e-mail mas uma senha de aplicativo criada para esse fim.

Execução automática

É possível agendar o script para exibir, em uma janela, o cardápio do dia em horários específicos. Por exemplo, para exibir o cardápio todos os dias da semana as 11 horas da manhã:

Usando o cron no Linux:

$ crontab -e

Adicione no final do arquivo a linha:

0 11 * * 1-5 export DISPLAY=:0 && /usr/bin/python /caminho/para/onde/está/o/script/sesc.py -g

No Windows também é possível agendar a execução do script utilizando o Agendador de tarefas

Testado em

Como o pdfminer é escrito inteiramente em python (compatível com python 2.4 ou mais recente) essa solução deve funcionar em qualquer máquina com um interpretador python instalado.

Limitações

Desenvolvimento

O comportamento padrão do sesc.py pode ser alterado modificando-se as variáveis no início do script:

default_unit = 'pinheiros'
default_home = join(expanduser("~"),'.sesc')
default_keep = False
cache_filename = 'cache.json'

Para se adicionar novas unidades, basta colocá-las no dicionário sesc_unit.

sesc_unit = {
    'pinheiros' : {
        'url'     : 'http://www.sescsp.org.br/sesc/busca/index.cfm?unidadesdirector=57#',
        'pdf'     : r'(?i).*?card.+?pio.*?',
        'entries' : r'^.?\d\d\s•.+?(?=\n\n)',
        'day'     : r'(?P<day>\d\d?)\s',
        'menus'   : r'brasileirinho\s*?\n((?:.|\n)+?)\nfog.*?o\scultural\s*\n((?:.|\n)+)'
    }
}

Atenção: Use parênteses para capturar os grupos nas expressões regulares que contêm a informação desejada. O script usará esses grupos para extrair os dados.

Mais informações

Para mais informações, reportar erros ou obter novas versões do script acesse a página do projeto.