This repository has been archived on 2023-06-21. You can view files and clone it, but cannot push or open issues or pull requests.
2021-12-19 02:52:06 +02:00

101 lines
3.2 KiB
Python

from bs4 import BeautifulSoup
import requests
from time import sleep
from datetime import date, timedelta
from discord_webhook import DiscordWebhook, DiscordEmbed
import json
from math import ceil
# while True:
TODAY = str(date.today().strftime("%Y/%m/%d"))
YESTERDAY = date.today() - timedelta(days = 1)
YESTERDAY = str(YESTERDAY.strftime("%Y/%m/%d"))
def write_json(new_data, filename='history.json'):
with open(filename,'r+') as file:
file_data = json.load(file)
file_data[TODAY] = new_data
file.seek(0)
json.dump(file_data, file, indent = 4)
def get_data():
r = requests.get("https://coronavirus.bg/bg")
r = r.text
soup = BeautifulSoup(r, 'html.parser')
new_confirmed = int(soup.find("p", {"class": "statistics-value confirmed"}).text.replace(" ", ""))
tests = soup.find("div",{"class":"col-lg-3 col-md-6"})
# I JUST FOUND OUT THERE ARE HIDDEN JSONS IN THE PAGE
# Remember kids, measure twice, cut once
r = requests.get("https://coronavirus.bg/statistics/vaccinated-agegroups.json").json()
vaxxed = 0
for i in r["data"].keys():
vaxxed += r["data"][i]
r = requests.get("https://www.worldometers.info/world-population/bulgaria-population/")
soup = BeautifulSoup(r.text, "html.parser")
current_population = int(soup.find("div", class_="col-md-8 country-pop-description").find_all_next("strong")[1].text.replace(",",""))
for i in tests.children:
if "statistics-subvalue" in str(i):
tests = int(str(i).split(">")[1].split("<")[0].replace(" ",""))
with open("history.json", "r") as f:
data = json.load(f)
try:
yesterday = data[YESTERDAY]
new_cases = new_confirmed - data[YESTERDAY]["Confirmed"]
except Exception as e:
yesterday = 0
new_cases = 1
print(e, "Passing...")
new_data = {
"Confirmed":new_confirmed,
"New Cases": new_cases,
"Tests":tests,
"Positive Percentage": ceil(new_cases/tests * 100),
"Vaccine Percentage":ceil(vaxxed / current_population * 100)
}
print(new_data)
write_json(new_data)
return new_data
def discord_daily():
webhook = DiscordWebhook(url="https://discord.com/api/webhooks/920787339146575943/ojsBB9nlWPnLp3ncW726_4UrckXOHBEHB5YJ7KDrwAnn_6tQTmDWitkY6yaxsxkeLnKC")
data = get_data()
# Color coding levels of danger
if data["Positive Percentage"] >= 10:
color = "fff00"
elif data["Positive Percentage"] >= 30:
color = "ff000"
elif data["Positive Percentage"] >= 50:
color = "ffa500"
elif data["Positive Percentage"] >= 80:
color = "000000"
else:
color = "00ff00"
embed = DiscordEmbed(title=f'Covid Daily {TODAY}', description='Daily briefing!', color=color)
for i in data.keys():
if "Percentage" in i:
embed.add_embed_field(name=str(i), value=str(data[i])+"%")
else:
embed.add_embed_field(name=str(i), value=str(data[i]))
embed.set_footer(text='Data taken from https://worldometer.com and https://coronavirus.bg')
webhook.add_embed(embed)
webhook.execute()
discord_daily()