Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 122334e

Browse files
addLogicaNoticia
1 parent 1bc5023 commit 122334e

File tree

5 files changed

+632
-114
lines changed

5 files changed

+632
-114
lines changed

‎.idea/workspace.xml

Lines changed: 16 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎areaTeste.py

Lines changed: 56 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,24 @@
66
from datetime import date, datetime
77
import requests
88

9+
from selenium import webdriver
10+
from webdriver_manager.chrome import ChromeDriverManager
11+
from selenium.webdriver.chrome.service import Service
12+
from selenium.webdriver.common.by import By
913

14+
servico = Service(ChromeDriverManager().install())
15+
navegador = webdriver.Chrome(service=servico)
1016

17+
headers = {
18+
'User-agent':
19+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 '
20+
'Safari/537.36 '
21+
}
1122

12-
# api GoogleNews - pip install GoogleNews
13-
# from GoogleNews import GoogleNews
14-
# noticias = GoogleNews(period='d')
15-
# noticias.setlang('pt')
16-
# noticias.search('petroleo')
17-
# resultado = noticias.results()
18-
# print(resultado)
19-
# noticia1 = resultado[0]
20-
# print(noticia1['desc'])
21-
# print(noticia1['link'])
22-
# noticia1 = resultado[1]
23-
# print(noticia1['desc'])
24-
# print(noticia1['link'])
23+
navegador.get('https://news.google.com/')
2524

2625

26+
input(':')
2727

2828
# api cotações moedas
2929
# cotacoes = requests.get('https://economia.awesomeapi.com.br/last/USD-BRL,EUR-BRL,BTC-BRL')
@@ -44,53 +44,49 @@
4444
# print(f'{btc} mil reais')
4545

4646

47-
48-
49-
5047
# api previsão do tempo
51-
consulta = input('Capital: ')
52-
with open('arquivos/previsoes_capitais_brasil.txt', 'r', encoding="utf8") as arquivo_previsoes:
53-
capitais = arquivo_previsoes.read()
54-
capitais = json.loads(capitais)
55-
with open('arquivos/capitais_estados.txt', 'r', encoding="utf8") as arquivo_capitais:
56-
estados = arquivo_capitais.read()
57-
estados = json.loads(estados)
58-
for i, j in estados.items():
59-
if consulta in i:
60-
estado = j
61-
print(f'{consulta}/{estado}')
62-
63-
consulta = capitais[consulta]
64-
65-
previsao = requests.get(consulta)
66-
previsao = previsao.json()
67-
68-
# dia
69-
data = previsao['daily']
70-
data = data['time']
71-
data = data[0]
72-
data = datetime.strptime(data, '%Y-%m-%d').date()
73-
data = datetime.strftime(data, '%d/%m/%Y')
74-
print(f'Data: {data}')
75-
76-
# temperatura mínima
77-
temp_min = previsao['daily']
78-
temp_min = temp_min['temperature_2m_min']
79-
temp_min = temp_min[0]
80-
print(f'Temperatura Mínima: {temp_min}')
81-
82-
# temperatura máxima
83-
temp_max = previsao['daily']
84-
temp_max = temp_max['temperature_2m_max']
85-
temp_max = temp_max[0]
86-
print(f'Temperatura Máxima: {temp_max}')
87-
88-
# precipitação
89-
precipitacao = previsao['daily']
90-
precipitacao = precipitacao['precipitation_sum']
91-
precipitacao = precipitacao[0]
92-
print(f'Precipitação de chuva última hora: {precipitacao} mm')
93-
48+
# consulta = input('Capital: ')
49+
# with open('arquivos/previsoes_capitais_brasil.txt', 'r', encoding="utf8") as arquivo_previsoes:
50+
# capitais = arquivo_previsoes.read()
51+
# capitais = json.loads(capitais)
52+
# with open('arquivos/capitais_estados.txt', 'r', encoding="utf8") as arquivo_capitais:
53+
# estados = arquivo_capitais.read()
54+
# estados = json.loads(estados)
55+
# for i, j in estados.items():
56+
# if consulta in i:
57+
# estado = j
58+
# print(f'{consulta}/{estado}')
59+
#
60+
# consulta = capitais[consulta]
61+
#
62+
# previsao = requests.get(consulta)
63+
# previsao = previsao.json()
64+
#
65+
# # dia
66+
# data = previsao['daily']
67+
# data = data['time']
68+
# data = data[0]
69+
# data = datetime.strptime(data, '%Y-%m-%d').date()
70+
# data = datetime.strftime(data, '%d/%m/%Y')
71+
# print(f'Data: {data}')
72+
#
73+
# # temperatura mínima
74+
# temp_min = previsao['daily']
75+
# temp_min = temp_min['temperature_2m_min']
76+
# temp_min = temp_min[0]
77+
# print(f'Temperatura Mínima: {temp_min}')
78+
#
79+
# # temperatura máxima
80+
# temp_max = previsao['daily']
81+
# temp_max = temp_max['temperature_2m_max']
82+
# temp_max = temp_max[0]
83+
# print(f'Temperatura Máxima: {temp_max}')
84+
#
85+
# # precipitação
86+
# precipitacao = previsao['daily']
87+
# precipitacao = precipitacao['precipitation_sum']
88+
# precipitacao = precipitacao[0]
89+
# print(f'Precipitação de chuva última hora: {precipitacao} mm')
9490

9591

9692
# arquivo proverbios
@@ -100,3 +96,4 @@
10096

10197

10298

99+

‎noticias.py

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
from PyQt5 import uic, QtWidgets, QtGui
2+
from selenium import webdriver
3+
from webdriver_manager.chrome import ChromeDriverManager
4+
from selenium.webdriver.chrome.service import Service
5+
from selenium.webdriver.common.by import By
6+
from selenium.webdriver.chrome.options import Options
7+
from bs4 import BeautifulSoup
8+
from time import sleep
9+
import json
10+
from datetime import date, datetime
11+
import requests
12+
13+
global textos
14+
global capitais
15+
global estados
16+
17+
18+
def buscar_noticias():
19+
20+
options = Options()
21+
options.add_argument('--headless')
22+
servico = Service(ChromeDriverManager().install())
23+
navegador = webdriver.Chrome(service=servico, options=options)
24+
navegador.get('https://jovempan.com.br/')
25+
26+
sleep(1)
27+
28+
site = BeautifulSoup(navegador.page_source, 'html.parser')
29+
noticia = site.find('div', attrs={'class': 'row row-flex'})
30+
titulos = noticia.findAll('p', attrs={'class': 'title'})
31+
32+
global textos
33+
textos = []
34+
for i in titulos:
35+
textos.append(i.text)
36+
37+
38+
def chamar_atualizar():
39+
import random
40+
print(textos[random.choice(range(len(textos)))])
41+
tela_noticias.label_noticias.setText(textos[random.choice(range(len(textos)))])
42+
43+
44+
def montar_listas_capitais():
45+
global capitais
46+
global estados
47+
with open('arquivos/previsoes_capitais_brasil.txt', 'r', encoding="utf8") as arquivo_previsoes:
48+
capitais = arquivo_previsoes.read()
49+
capitais = json.loads(capitais)
50+
print(capitais)
51+
with open('arquivos/capitais_estados.txt', 'r', encoding="utf8") as arquivo_capitais:
52+
estados = arquivo_capitais.read()
53+
estados = json.loads(estados)
54+
print(estados)
55+
56+
57+
def previsao_capital():
58+
consulta = tela_noticias.comboBox.currentText()
59+
print(consulta)
60+
61+
if consulta == 'CAPITAIS':
62+
tela_noticias.label_previsao.setText('Selecione uma Capital')
63+
tela_noticias.label_capital_estado.setText('Capital/Estado')
64+
else:
65+
print(consulta)
66+
for i, j in estados.items():
67+
if consulta in i:
68+
estado = j
69+
tela_noticias.label_capital_estado.setText(f'{consulta}/{estado}')
70+
print(f'{consulta}/{estado}')
71+
72+
consulta = capitais[consulta]
73+
print(consulta)
74+
75+
previsao = requests.get(consulta)
76+
previsao = previsao.json()
77+
78+
data = previsao['daily']
79+
data = data['time']
80+
data = data[0]
81+
data = datetime.strptime(data, '%Y-%m-%d').date()
82+
data = datetime.strftime(data, '%d/%m/%Y')
83+
print(f'Data: {data}')
84+
85+
temp_min = previsao['daily']
86+
temp_min = temp_min['temperature_2m_min']
87+
temp_min = temp_min[0]
88+
print(f'Temperatura Mínima: {temp_min}')
89+
90+
temp_max = previsao['daily']
91+
temp_max = temp_max['temperature_2m_max']
92+
temp_max = temp_max[0]
93+
print(f'Temperatura Máxima: {temp_max}')
94+
95+
precipitacao = previsao['daily']
96+
precipitacao = precipitacao['precipitation_sum']
97+
precipitacao = precipitacao[0]
98+
print(f'Precipitação de chuva última hora: {precipitacao} mm')
99+
100+
tela_noticias.label_previsao.setText(f'Temperatura Mínima: {temp_min}\n'
101+
f'Temperatura Máxima: {temp_max}\n'
102+
f'Precipitação de chuva última hora: {precipitacao} mm')
103+
104+
data_hora = datetime.now()
105+
print(f'{data_hora.day}/{data_hora.month}/{data_hora.year}\n'
106+
f'{data_hora.hour}:{data_hora.minute}')
107+
tela_noticias.label_data_hora.setText((f'{data_hora.day}/{data_hora.month}/{data_hora.year}\n'
108+
f'{data_hora.hour}:{data_hora.minute}'))
109+
110+
111+
112+
113+
app = QtWidgets.QApplication([])
114+
tela_noticias = uic.loadUi('tela_noticias.ui')
115+
tela_noticias.setWindowTitle('Notícias')
116+
tela_noticias.setWindowIcon(QtGui.QIcon('imagens/informativo_icon.png'))
117+
118+
tela_noticias.btn_atualizar.clicked.connect(chamar_atualizar)
119+
tela_noticias.btn_tempo.clicked.connect(previsao_capital)
120+
121+
buscar_noticias()
122+
montar_listas_capitais()
123+
124+
tela_noticias.show()
125+
app.exec()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /