mirror of
https://forge.chapril.org/tykayn/wololo
synced 2025-06-20 01:34:42 +02:00
79 lines
2.8 KiB
Python
79 lines
2.8 KiB
Python
import requests
|
|
from bs4 import BeautifulSoup
|
|
import re
|
|
import json
|
|
from datetime import datetime
|
|
|
|
def extract_info_from_title(title):
|
|
# Extraire le nombre de points de recharge
|
|
nombre_match = re.search(r'(\d+\s*\d*)', title)
|
|
nombre = int(nombre_match.group(1).replace(' ', '')) if nombre_match else None
|
|
|
|
# Extraire la date
|
|
date_match = re.search(r'fin (\w+) (\d{4})', title)
|
|
if date_match:
|
|
mois = date_match.group(1)
|
|
annee = date_match.group(2)
|
|
date = f"{mois} {annee}"
|
|
else:
|
|
date = None
|
|
|
|
return {
|
|
"nombre_points": nombre,
|
|
"date": date
|
|
}
|
|
|
|
def get_avere_data():
|
|
# URL de la page AVERE
|
|
url = "https://www.avere-france.org/publications/?publication-type%5B%5D=barometres-recharge"
|
|
|
|
# En-têtes pour simuler un navigateur
|
|
headers = {
|
|
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
|
|
}
|
|
|
|
try:
|
|
# Effectuer la requête HTTP
|
|
response = requests.get(url, headers=headers)
|
|
response.raise_for_status()
|
|
|
|
# Parser le HTML
|
|
soup = BeautifulSoup(response.text, 'html.parser')
|
|
|
|
# Trouver la première entrée dans la liste des publications
|
|
posts_list = soup.find('ul', class_='posts-list')
|
|
if posts_list:
|
|
first_title = posts_list.find('h3', class_='card-title')
|
|
if first_title:
|
|
title_text = first_title.text.strip()
|
|
return extract_info_from_title(title_text)
|
|
|
|
return None
|
|
|
|
except Exception as e:
|
|
print(f"Erreur lors de la récupération des données : {str(e)}")
|
|
return None
|
|
|
|
def count_irve_features():
|
|
try:
|
|
with open('../etalab_data/irve_bornes_recharge/latest.json', 'r') as f:
|
|
data = json.load(f)
|
|
return len(data.get('features', []))
|
|
except Exception as e:
|
|
print(f"Erreur lors de la lecture du fichier JSON : {str(e)}")
|
|
return None
|
|
|
|
if __name__ == "__main__":
|
|
# Récupérer les données AVERE
|
|
avere_data = get_avere_data()
|
|
if avere_data and avere_data['nombre_points']:
|
|
print(f"Données AVERE : {avere_data['nombre_points']} points de recharge (date: {avere_data['date']})")
|
|
|
|
# Compter les points dans l'open data
|
|
irve_count = count_irve_features()
|
|
if irve_count is not None:
|
|
difference = avere_data['nombre_points'] - irve_count
|
|
print(f"Nombre de points dans l'open data : {irve_count}")
|
|
print(f"Différence : {difference} points manquants dans l'open data")
|
|
pourcentage_manquant = (difference / avere_data['nombre_points']) * 100
|
|
print(f"Pourcentage manquant : {pourcentage_manquant:.1f}%")
|