Home Monitoramento do Diário Oficial da União via Telegram
Post
Cancelar

Monitoramento do Diário Oficial da União via Telegram

Diário Oficial da União

O Diário Oficial da União é um dos veículos de comunicação pelo qual a Imprensa Nacional do Brasil tem de tornar público todo e qualquer assunto acerca do âmbito federal.1

Acompanhar o DOU é uma tarefa tediosa, mas que deve ser feita diariamente, seja você um servidor público, um concurseiro ou apenas um cidadão que gosta de saber das decisões que dizem respeito ao nosso país. Não raramente são publicadas versões adicionais e em horários não programados. Fazer o montoramento manualmente é inviável.

DOU2Telegram

requirements.txt

Instale os seguintes requisitos:

1
2
3
4
pyTelegramBotAPI==4.21.0
requests==2.31.0
urllib3==1.26.3
beautifulsoup4==4.9.1

bot.py

Preencha as variáveis e execute o código:

  • <TOKEN>: Token do bot que fará os envios2.
  • <TERMO>: Termo usado na busca do Diário Oficial.
  • <CHATID>: ID de destino da mensagem3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import requests
import telebot
import urllib
from bs4 import BeautifulSoup
from datetime import datetime

bot = telebot.TeleBot('<TOKEN>')
termo = '<TERMO>'
chatid = <CHATID>

def check_dou(link, param):
    try:
        response = requests.get(
            link,
            timeout=10,
                headers={'User-agent': 'Mozilla/5.1'}
            )
    except:
        return False
    return BeautifulSoup(response.content, 'html.parser')

def get_dou_results(html):
    div_content = html.find('p', {'class': 'search-total-label'})
    qtd_results = int(div_content.text.strip().split()[0])
    return div_content, qtd_results

def send_message(param, link, results):
    btn_link = telebot.types.InlineKeyboardMarkup()
    btn = telebot.types.InlineKeyboardButton(f'🔗 Consultar', url=link)
    btn_link.row(btn)
    bot.send_message(
        chatid,
        '🛎  <b>Diário Oficial da União</b>\n\n'+
        f'<b>Termo</b>: <code>{param}</code>\n'+
        f'<b>Resultados</b>: {results}\n',
        parse_mode='HTML',
        reply_markup=btn_link
    )

if __name__ == "__main__":
    today = datetime.today().strftime("%d-%m-%Y")
    link = (
        'https://www.in.gov.br/consulta/-/buscar/dou?q=%22'
        +f'{urllib.parse.quote_plus(termo)}'
        +'%22&s=todos&exactDate=personalizado'
        +f'&sortType=0&publishFrom={today}&publishTo={today}'
    )
    html = check_dou(link, param)
    if html:
        content, results = get_dou_results(html)
        if results:
            send_message(param, link, results)

Resumo do funcionamento

O script simula uma busca no Diário Oficial usando como parâmetro a data atual, função check_dou. Havendo resultados, função get_dou_results, é enviada uma mensagem com a função send_message.


Esta postagem está licenciada sob CC BY 4.0 pelo autor.