Hoje tem Flamengo! no conky

Hoje tem Flamengo! no conky

Diante de tantas prioridades no dia, gostaríamos de ficar sempre que possível, atualizados sobre tudo: principais notícias, cotação do dólar, assuntos mais comentados no momento, quando, onde e contra quem nosso time do coração irá jogar.

Através da tecnologia, programar e, de preferência, com Python, nos permite estar à frente para usufruir de um mundo cheio de informações, ficando ligados em tudo o que acontece de uma forma mais prática e eficiente.

Criei um script que me informa na área de trabalho do computador quais são os próximos jogos do Flamengo. Utilizei Python para realizar web scraping e Conky para exibir um painel personalizado com as informações que preciso.

Conky

O Conky é um monitor de sistema altamente personalizável para sistemas Linux Like. Por meio de arquivos de configuração, além dos painéis de monitoramento do sistema, é possível personalizar novos painéis do Conky na área de trabalho. Saiba mais sobre o conky.

Flamengo

O maior time do mundo, com a maior torcida do mundo, etc., e mais uma vez sendo mencionado aqui, servindo-me de inspiração para criar algumas ideias utilizando tecnologia.

Scraping

Utilizando Python e bibliotecas como requests e BeautifulSoup4, a ideia é realizar um scraping no site do Flamengo capturando as informações dos próximos jogos do clube e exibi-las no Conky.

Disclaimer Importante:
Este exemplo prático de web scraping tem como propósito educacional, demonstração e utilização técnica. É crucial respeitar os termos de serviço e políticas de privacidade dos sites ao realizar atividades de web scraping. Todo o conteúdo, marcas, e propriedades intelectuais mencionadas no exemplo pertencem ao C.R. do Flamengo.

Podemos verificar os próximos jogos acessando a url https://www.flamengo.com.br/jogos/

Importação das bibliotecas

import requests
import os
from bs4 import BeautifulSoup

Utilização de headers e acessando a url

É comum utilizar headers para simular o comportamento de um navegador web real, alguns dos motivos disso é evitar que os sites possam bloquear ip’s, ter garantia de receber o conteúdo da mesma forma que é vista no navegador e respeitar as políticas do site fornecendo confiabilidade ao servidor.

A lib requests permite acessar o site e ter a resposta do conteúdo desse site.

O uso do timeout no requests evita espera indefinida, melhora eficiência, previne bloqueios de thread(travamento do script) e trata erros de conexão de forma adequada.

# URL do site do Flamengo
url = https://www.flamengo.com.br/jogos/

headers = {
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
}

# Faz a requisição HTTP
response = requests.get(url, headers=headers, timeout=5)

Estrutura html e manipulação das tags com BeautifulSoup

É preciso identificar a estrutura base do html onde será feita a coleta das informações manipuladas pelo BeautifulSoup, que aqui é a div com uma classe chamada “panel-games”.

A variável content terá as informações extraídas pelo BeautifulSoup e será o conteúdo a ser interpretado e exibido pelo conky através de um arquivo de texto, utilizando os parâmetros necessários para a personalização do painel.

O loop for pecorrerá toda a div e novas variáveis(month, games, tournament, teams, etc) são criadas para ter valores atribuídos extraídos das tags html existentes de dentro da div, os famosos elementos filhos da div pai panel-games.

Essas variáveis são usadas no content como forma de seus valores serem salvos e interpretados como texto puro.

# Cria o objeto BeautifulSoup para analisar o HTML
soup = BeautifulSoup(response.text, html.parser)

# Encontra os elementos com a classe ‘panel-games’
panel_games = soup.find_all(class_=panel-games)

content = “”

# Itera sobre cada panel-games encontrado
for panel_game in panel_games:

# Extrai o mês
month_tag = panel_game.find(h2)
if month_tag:
month = month_tag.get_text(strip=True)
else:
continue

content += f${{color red}}n${{font Arial Black:size=12}}{month}$font$colornn

# Extrai as informações de cada jogo
games = panel_game.find_all(class_=py-4)

for game in games:
# Extrai a data e horário do jogo
date_time_tag = game.find(p)
if date_time_tag:
date_time = date_time_tag.get_text(strip=True)
content += f{date_time}n
else:
continue

# Extrai o torneio
tournament_tag = game.find(class_=destaque)
if tournament_tag:
tournament = tournament_tag.get_text(strip=True)
content += f${{color red}}{tournament}$color ${{alignr}}${{color gray}}${{font Arial Black:size=5}}{formatted_date}${{font}}$colornn
else:
continue

# Extrai os times
teams_tag = game.find(class_=game-teams)
if teams_tag:
teams = teams_tag.find_all(p, class_=d-none d-lg-inline-block)
if len(teams) == 2:
team1 = teams[0].get_text(strip=True)
team2 = teams[1].get_text(strip=True)
content += f${{alignc}}${{color white}}${{font Arial Black:size=12}}{team1} x {team2}${{font}}$colornn
else:
continue
else:
continue

Salvando o conteúdo(content) em um arquivo txt chamado flamengo-jogos.txt que será lido no arquivo de configuração do conky para ser exibido no painel.

# Salva o conteúdo no arquivo flamengo-jogos.txt
with open(flamengo-jogos.txt, w) as file:
file.write(content)

print(Arquivo flamengo-jogos.txt criado com sucesso.)

O código completo disponível aqui: fla-conky

O arquivo de configuração do painel para o Conky – fla-conky.conf

O arquivo de configuração fla-conky.conf é o arquivo referente ao painel dos jogos do Flamengo exibido na área de trabalho.

O arquivo contém parâmetros que definem a aparência, transparência, intervalo de atualização, fonte e margens. Esses parâmetros controlam a exibição e o estilo das informações na área de trabalho.

No final, é utilizado o comando execpi para executar um comando a cada intervalo especificado (100 segundos neste caso) e exibir o resultado na área de trabalho. O comando cat é usado para mostrar o conteúdo do arquivo /home/…/fla-conky/flamengo-jogos.txt, que contém informações sobre os jogos.

conky.config = {
default_color = ‘#afafaf’,

own_window = true,
own_window_transparent = true,
own_window_argb_visual = true,
own_window_argb_value = 180,
own_window_type = ‘normal’,
own_window_colour = ‘#000000’,
own_window_hints = ‘undecorated, below, sticky, skip_taskbar, skip_pager’,

update_interval = 1.0,
double_buffer = true,
use_spacer = ‘right’,

alignment = ‘bottom_left’,
use_xft = true,
font = ‘Monospace:size=8:style=semibold’,

border_inner_margin = 10,
border_outer_margin = 0,
border_width = 1,
draw_graph_borders = true,

gap_x = 100,
gap_y = 580,
}

conky.text = [[
${execpi 100 cat /home/…/fla-conky/flamengo-jogos.txt}
]]

Resultado

E assim ficou o painel exibido na área de trabalho. Tentarei depois exibir também os emblemas, mas no momento esse painel me atende em relação a quando, onde e contra quem o Flamengo joga.

Leave a Reply

Your email address will not be published. Required fields are marked *