1
0
Fork 0
SabradouMap/core.php

162 lines
5.1 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 existantes depuis la base JSON
$jsonData = file_get_contents('cities.json');
$existingData = json_decode($jsonData, 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 de la ville existent déjà dans la base
if (isset($existingData[$ville])) {
// Utiliser les coordonnées existantes
$latitude = $existingData[$ville]['lat'];
$longitude = $existingData[$ville]['lon'];
} 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'];
// Stocker les coordonnées dans la base JSON
$existingData[$ville] = array(
'lat' => $latitude,
'lon' => $longitude,
);
}
}
// Ajouter la ville et ses coordonnées au tableau
$citiesData[] = array(
'name' => $ville,
'lat' => $latitude,
'lon' => $longitude,
'href' => $href,
);
}
// Enregistrer les données mises à jour dans la base JSON
file_put_contents('cities.json', json_encode($existingData));
return $citiesData;
}
function getDatejour($jour) {
// URL de la page à analyser
$url = 'https://www.sabradou.com/' . $jour;
// 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 du <h2> avec l'id "datejour"
$datejourH2 = $dom->getElementById('datejour');
// Extraire la date du contenu du <h2>
$datejour = trim($datejourH2->nodeValue);
return $datejour;
}