import pandas as pd
import requests
from bs4 import BeautifulSoup
import plotly.express as px

date = input("Pour quel date voulez-vous le graphique ? (JJ/MM/AAAA)")

correspondance_mois = {
    "01": "janvier",
    "02": "février",
    "03": "mars",
    "04": "avril",
    "05": "mai",
    "06": "juin",
    "07": "juillet",
    "08": "août",
    "09": "septembre",
    "10": "octobre",
    "11": "novembre",
    "12": "décembre"
}



mois = correspondance_mois[date[3:5]]

url = f"https://www.infoclimat.fr/observations-meteo/archives/{date[0:2]}/{mois}/{date[-4:]}/niort/00059.html"
print(url)

response = requests.get(url)

soup = BeautifulSoup(response.content, 'html.parser')

table = soup.find('table', {'id': 'resptable-releves'})

rows = table.find_all('tr')

heure = table.find_all('th')

heur = []
for h in  heure:
    heur.append(h.text.strip())
 
data = []

for row,h in zip(rows[1:], heur[8:]):
    
    cells = row.find_all('td')
    heure = h
    temperature = cells[0].text.strip()
    pluie = cells[1].text.strip()
    vent = cells[2].text.strip()
    humidite = cells[3].text.strip()
    ptderose = cells[5].text.strip()
    data.append([heure, temperature, pluie, vent, humidite, ptderose])

df = pd.DataFrame(data, columns=["Heure", "Température en °C", "Pluie en mm/1h", "Vent en km/h", "Humidite en %", "Point de rosée en °C"])

df['Température en °C'] = df['Température en °C'].apply(lambda x: float(x[:-3]))
df['Température en °C'] = df['Température en °C'][:-1]


# df['Pluie en mm/1h'] = df['Pluie en mm/1h'].replace(r'^\s*$', np.nan, regex=True)
# df['Pluie en mm/1h'] = df['Pluie en mm/1h'].fillna(0)

# i = 0

# for val in df['Pluie en mm/1h']:
    
#     if isinstance(val, str):
        
#         df['Pluie en mm/1h'] = df['Pluie en mm/1h'][i].str.split(' mm').str[0].astype(float)
#         i+=1
#     else:
#         i+=1
#         pass


# df['Pluie en mm/1h'] = df['Pluie en mm/1h'][:-1]

# df['vent'] = df['vent'].apply(lambda x: float(x[:-3]))
# df['vent'] = df['vent'][:-1]

df['Humidite en %'] = df['Humidite en %'].apply(lambda x: float(x[0:2]))
df['Humidite en %'] = df['Humidite en %'][:-1]

df['Point de rosée en °C'] = df['Point de rosée en °C'].apply(lambda x: float(x[:-3]))
df['Point de rosée en °C'] = df['Point de rosée en °C'][:-1]



fig1 = px.line(df, x="Heure",y="Température en °C",title="Graphique de le température")
fig1.show(renderer="browser")

# fig2 = px.line(df, x="Heure",y="Pluie en mm/1h",title="Graphique de la pluie")
# fig2.show(renderer="browser")

# fig3 = px.line(df, x="Heure",y="Vent en km/h",title="Graphique du vent")
# fig3.show(renderer="browser")

fig4 = px.line(df, x="Heure",y="Humidite en %",title="Graphique de l'humidite")
fig4.show(renderer="browser")

fig5 = px.line(df, x="Heure",y="Point de rosée en °C",title="Graphique du point de rosée")
fig5.show(renderer="browser")
