138 lines
4.5 KiB
PHP
138 lines
4.5 KiB
PHP
<?php
|
|
|
|
function getCalendrier()
|
|
{
|
|
|
|
// URL de la page à analyser
|
|
$url = 'https://www.sabradou.com/index.php';
|
|
|
|
// Récupération du contenu de la page
|
|
$html = file_get_contents($url);
|
|
|
|
// Création d'un objet DOMDocument
|
|
$dom = new DOMDocument();
|
|
libxml_use_internal_errors(true); // Ignore les erreurs de parsing HTML
|
|
$dom->loadHTML($html);
|
|
libxml_clear_errors();
|
|
|
|
// Recherche de la div avec l'id "calendrier"
|
|
$calendrierDiv = $dom->getElementById('calendrier');
|
|
|
|
// Récupération des liens dans la liste
|
|
$calendrierLinks = $calendrierDiv->getElementsByTagName('a');
|
|
|
|
// Tableau pour stocker les nodes et les URLs
|
|
$calendrier = array();
|
|
|
|
// Parcourir les liens et récupérer les nodes et les URLs
|
|
foreach ($calendrierLinks as $link) {
|
|
$node = $link->nodeValue;
|
|
$url = $link->getAttribute('href');
|
|
$calendrier[] = array(
|
|
'node' => $node,
|
|
'url' => $url,
|
|
);
|
|
}
|
|
return ($calendrier);
|
|
}
|
|
function getCities($html)
|
|
{
|
|
// Création d'un objet DOMDocument
|
|
$html = file_get_contents('https://www.sabradou.com/' . $html);
|
|
$dom = new DOMDocument();
|
|
libxml_use_internal_errors(true); // Ignore les erreurs de parsing HTML
|
|
$dom->loadHTML($html);
|
|
libxml_clear_errors();
|
|
|
|
// Recherche du div avec l'id "sommaire-centre"
|
|
$sommaireCentreDiv = $dom->getElementById('sommaire-centre');
|
|
|
|
// Recherche des balises <li> dans le div
|
|
$liElements = $sommaireCentreDiv->getElementsByTagName('li');
|
|
|
|
// Tableau pour stocker les villes
|
|
$cities = array();
|
|
|
|
// Parcourir les balises <li> et extraire le texte cliquable des liens
|
|
foreach ($liElements as $liElement) {
|
|
// Vérifier s'il y a un lien dans le <li>
|
|
$linkElement = $liElement->getElementsByTagName('a')->item(0);
|
|
if ($linkElement) {
|
|
$ville = $linkElement->nodeValue;
|
|
$ville = preg_replace('/^(B\s|\d{2}\s)/', '', $ville);
|
|
$href = $linkElement->getAttribute('href');
|
|
$cities[] = array(
|
|
'name' => $ville,
|
|
'href' => $href,
|
|
);
|
|
}
|
|
}
|
|
// Créer un tableau temporaire contenant les valeurs de la clé "name"
|
|
$names = array_column($cities, 'name');
|
|
|
|
// Trier le tableau temporaire par ordre alphabétique
|
|
array_multisort($names, SORT_ASC, $cities);
|
|
;
|
|
|
|
return $cities;
|
|
}
|
|
|
|
function geocode($cities)
|
|
{
|
|
// Tableau pour stocker les villes et leurs coordonnées
|
|
$citiesData = array();
|
|
|
|
// Charger les données à partir du fichier JSON s'il existe
|
|
if (file_exists('cities_data.json')) {
|
|
$citiesData = json_decode(file_get_contents('cities_data.json'), true);
|
|
}
|
|
|
|
// Parcourir les villes et géocoder leurs coordonnées
|
|
foreach ($cities as $city) {
|
|
$ville = $city['name'];
|
|
$href = $city['href'];
|
|
|
|
// Vérifier si les coordonnées sont déjà présentes dans le tableau
|
|
$existingCity = array_filter($citiesData, function ($data) use ($ville) {
|
|
return $data['name'] === $ville;
|
|
});
|
|
|
|
if (!empty($existingCity)) {
|
|
// Utiliser les coordonnées existantes
|
|
$citiesData[] = reset($existingCity);
|
|
} else {
|
|
// Requête à l'API Nominatim
|
|
$options = array(
|
|
'http' => array(
|
|
'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
|
|
),
|
|
);
|
|
$context = stream_context_create($options);
|
|
$url = 'https://nominatim.openstreetmap.org/search?city=' . urlencode($ville) . '&format=json';
|
|
$response = file_get_contents($url, false, $context);
|
|
$data = json_decode($response, true);
|
|
|
|
// Vérifier si la requête a réussi
|
|
if (!empty($data)) {
|
|
// Récupérer les coordonnées géographiques de la première correspondance
|
|
$latitude = $data[0]['lat'];
|
|
$longitude = $data[0]['lon'];
|
|
|
|
// Ajouter la ville et ses coordonnées au tableau
|
|
$cityData = array(
|
|
'name' => $ville,
|
|
'lat' => $latitude,
|
|
'lon' => $longitude,
|
|
'href' => $href,
|
|
);
|
|
$citiesData[] = $cityData;
|
|
|
|
// Sauvegarder les données dans le fichier JSON
|
|
file_put_contents('cities_data.json', json_encode($citiesData));
|
|
}
|
|
}
|
|
}
|
|
|
|
return $citiesData;
|
|
}
|