import requests
import zipfile
import xml.etree.ElementTree as ET
import json
import io
import os

url = "https://donnees.roulez-eco.fr/opendata/instantane"

r = requests.get(url)

z = zipfile.ZipFile(io.BytesIO(r.content))
xml_file = z.open(z.namelist()[0])

tree = ET.parse(xml_file)
root = tree.getroot()

stations = []

for pdv in root.findall("pdv"):
    lat = float(pdv.attrib["latitude"]) / 100000
    lon = float(pdv.attrib["longitude"]) / 100000

    for prix in pdv.findall("prix"):
        stations.append({
            "id": pdv.attrib["id"],
            "fuel": prix.attrib["nom"],
            "price": float(prix.attrib["valeur"]),
            "lat": lat,
            "lon": lon
        })

import os

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
output = os.path.join(BASE_DIR, "stations.json")

with open(output, "w") as f:
    json.dump(stations, f)