update gas API url

This commit is contained in:
2026-03-30 20:37:06 +02:00
parent 307f995992
commit 99aeb04168

163
gas.py
View File

@@ -1,83 +1,80 @@
import requests import requests
import mysql.connector import mysql.connector
from mysql.connector import Error from mysql.connector import Error
def insert_gas_price_data(): def insert_gas_price_data():
connection = None connection = None
try: try:
url = "https://enever.nl/api/gasprijs_vandaag.php?token=5a7d9b371fe147cfc8100bcf6d9ebd55" # 1. Gasdata ophalen
response = requests.get(url) url = "https://enever.nl/apiv3/gasprijs_vandaag.php?token=5a7d9b371fe147cfc8100bcf6d9ebd55"
response = requests.get(url)
if response.status_code != 200:
raise Exception('Fout bij het ophalen van de gasdata.') if response.status_code != 200:
raise Exception(f'Fout bij het ophalen van de gasdata. Status: {response.status_code}')
data = response.json()
data = response.json()
if data is None or 'data' not in data:
raise Exception('Fout bij het decoderen van de JSON-data.') if not data or 'data' not in data:
raise Exception('Fout bij het decoderen van de JSON-data of lege respons.')
connection = mysql.connector.connect(
host='127.0.0.1', # 2. Database verbinding
database='alfen', connection = mysql.connector.connect(
user='alfen_user', host='127.0.0.1',
password='5uVgr%f%s2P5GR@3q!', database='alfen',
port=3307 user='alfen_user',
) password='5uVgr%f%s2P5GR@3q!',
port=3307
if connection.is_connected(): )
cursor = connection.cursor()
if connection.is_connected():
query = """ cursor = connection.cursor()
INSERT INTO gas_price_data (datetime, provider_code, price)
VALUES (%s, %s, %s) # Gebruik VALUES(price) in de update voor een schonere query
ON DUPLICATE KEY UPDATE price = %s query = """
""" INSERT INTO gas_price_data (datetime, provider_code, price)
VALUES (%s, %s, %s)
providers = { ON DUPLICATE KEY UPDATE price = VALUES(price)
'EGSI': 'prijsEGSI', """
'EOD': 'prijsEOD',
'ANWB': 'prijsANWB', providers = {
'BE': 'prijsBE', 'EGSI': 'prijsEGSI', 'EOD': 'prijsEOD', 'ANWB': 'prijsANWB',
'EE': 'prijsEE', 'BE': 'prijsBE', 'EE': 'prijsEE', 'EN': 'prijsEN',
'EN': 'prijsEN', 'EVO': 'prijsEVO', 'EZ': 'prijsEZ', 'FR': 'prijsFR',
'EVO': 'prijsEVO', 'GSL': 'prijsGSL', 'MDE': 'prijsMDE', 'NE': 'prijsNE',
'EZ': 'prijsEZ', 'PE': 'prijsPE', 'QU': 'prijsQU', 'SS': 'prijsSS',
'FR': 'prijsFR', 'TI': 'prijsTI', 'VDB': 'prijsVDB', 'VON': 'prijsVON',
'GSL': 'prijsGSL', 'VF': 'prijsVF', 'WE': 'prijsWE', 'ZP': 'prijsZP'
'MDE': 'prijsMDE', }
'NE': 'prijsNE',
'PE': 'prijsPE', count = 0
'QU': 'prijsQU', for entry in data['data']:
'SS': 'prijsSS', # FIX: Schoon de datum string op voor MySQL
'TI': 'prijsTI', raw_dt = entry['datum']
'VDB': 'prijsVDB', clean_dt = raw_dt.replace('T', ' ').split('+')[0]
'VON': 'prijsVON',
'VF': 'prijsVF', for code, price_field in providers.items():
'WE': 'prijsWE', if price_field in entry and entry[price_field] is not None:
'ZP': 'prijsZP' price = entry[price_field]
} try:
cursor.execute(query, (clean_dt, code, price))
for entry in data['data']: count += 1
datetime = entry['datum'] except Error as e:
for code, price_field in providers.items(): print(f"Fout bij klaarzetten gasdata voor {code} op {clean_dt}: {e}")
if price_field in entry:
price = entry[price_field] # 3. Commit alle wijzigingen in een keer
try: connection.commit()
cursor.execute(query, (datetime, code, price, price)) print(f"Succesvol {count} gasprijs-records verwerkt.")
connection.commit()
except Error as e: except Error as e:
print(f"Fout bij invoeren van gasdata voor provider {code}: {e}") print(f"Fout bij databaseverbinding: {e}")
continue except Exception as e:
print(f"Algemene fout: {e}")
except Error as e: finally:
print(f"Fout bij databaseverbinding: {e}") if connection is not None and connection.is_connected():
except Exception as e: cursor.close()
print(f"Algemene fout: {e}") connection.close()
finally: print("Databaseverbinding gesloten.")
if connection is not None and connection.is_connected():
cursor.close() if __name__ == "__main__":
connection.close() insert_gas_price_data()
if __name__ == "__main__":
insert_gas_price_data()