#include ; #FUNCTION# ==================================================================================================================== ; Name ..........: GetAddressInfo ; Description ...: Obtient des informations basées sur les coordonnées géographiques. ; Syntax ........: GetAddressInfo($fLatitude, $fLongitude[, $sInfoName = 'display_name']) ; Parameters ....: $fLatitude - Valeur flottante représentant la latitude. ; $fLongitude - Valeur flottante représentant la longitude. ; $sInfoName - [optionnel] Une chaîne de caractères représentant le nom de l'information à obtenir (par défaut : display_name). ; Return values .: Information basée sur les coordonnées géographiques. ; Author ........: Numeric ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func GetAddressInfo($fLatitude, $fLongitude, $sInfoName = 'display_name') Local $url = "https://nominatim.openstreetmap.org/reverse?format=json&lat=" & $fLatitude & "&lon=" & $fLongitude Local $info = __ExtractJsonValue(_INetGetSource($url), $sInfoName) If @error Then Return SetError(1, 0, "") EndIf Return $info EndFunc ;==>GetAddressInfo ; #FUNCTION# ==================================================================================================================== ; Name ..........: GetCoordinatesFromAddress ; Description ...: Obtient les coordonnées géographiques (latitude et longitude) pour une adresse donnée. ; Syntax ........: GetCoordinatesFromAddress($sAddress) ; Parameters ....: $sAddress - Une chaîne de caractères représentant l'adresse. ; Return values .: Array contenant les coordonnées géographiques. ; Author ........: Numeric ; Modified ......: ; Remarks .......: Documentation complète ; Related .......: ; Link ..........: ; Example .......: Yes ; =============================================================================================================================== Func GetCoordinatesFromAddress($sAddress) ; Validation de l'adresse If $sAddress == "" Then Return SetError(2, 0, "") EndIf Local $url = "https://nominatim.openstreetmap.org/search?format=json&q=" & StringReplace($sAddress, " ", "+") Local $response = _INetGetSource($url) ; Vérification des erreurs de requête If @error Then Return SetError(1, 0, "") EndIf Local $aCoords[2] = [Number(__ExtractJsonValue($response, "lat")), Number(__ExtractJsonValue($response, "lon"))] Return $aCoords EndFunc ;==>GetCoordinatesFromAddress ; #FUNCTION# ==================================================================================================================== ; Name ..........: GetDistanceBetweenCoordinates ; Description ...: Obtient la distance en kilomètres entre deux paires de coordonnées géographiques. ; Syntax ........: GetDistanceBetweenCoordinates($fLatitude1, $fLongitude1, $fLatitude2, $fLongitude2) ; Parameters ....: $fLatitude1 - Latitude du premier point. ; $fLongitude1 - Longitude du premier point. ; $fLatitude2 - Latitude du deuxième point. ; $fLongitude2 - Longitude du deuxième point. ; Return values .: Distance en kilomètres. ; Author ........: Numeric ; Modified ......: ; Remarks .......: Documentation complète ; Related .......: ; Link ..........: ; Example .......: Yes ; =============================================================================================================================== Func GetDistanceBetweenCoordinates($fLatitude1, $fLongitude1, $fLatitude2, $fLongitude2) ; Validation des coordonnées If Not IsFloat($fLatitude1) Or Not IsFloat($fLongitude1) Or Not IsFloat($fLatitude2) Or Not IsFloat($fLongitude2) Then Return SetError(2, 0, 0) EndIf Local $earthRadius = 6371 ; Rayon moyen de la Terre en kilomètres. Local $lat1Rad = $fLatitude1 * (3.14159265358979 / 180) Local $lon1Rad = $fLongitude1 * (3.14159265358979 / 180) Local $lat2Rad = $fLatitude2 * (3.14159265358979 / 180) Local $lon2Rad = $fLongitude2 * (3.14159265358979 / 180) Local $latDiff = $lat2Rad - $lat1Rad Local $lonDiff = $lon2Rad - $lon1Rad Local $a = Sin($latDiff / 2) ^ 2 + Cos($lat1Rad) * Cos($lat2Rad) * Sin($lonDiff / 2) ^ 2 Local $angle = ATan(Sqrt($a) / Sqrt(1 - $a)) Local $c = 2 * $earthRadius * $angle Return $c EndFunc ;==>GetDistanceBetweenCoordinates ; #FUNCTION# ==================================================================================================================== ; Name ..........: GetFormattedAddress ; Description ...: Obtient une adresse formatée basée sur les coordonnées géographiques. ; Syntax ........: GetFormattedAddress($fLatitude, $fLongitude) ; Parameters ....: $fLatitude - Valeur flottante représentant la latitude. ; $fLongitude - Valeur flottante représentant la longitude. ; Return values .: Adresse formatée basée sur les coordonnées géographiques. ; Author ........: Numeric ; Modified ......: ; Remarks .......: Documentation complète ; Related .......: ; Link ..........: ; Example .......: Yes ; =============================================================================================================================== Func GetFormattedAddress($fLatitude, $fLongitude) ; Validation des coordonnées If Not IsFloat($fLatitude) Or Not IsFloat($fLongitude) Then Return SetError(2, 0, "") EndIf Return GetAddressInfo($fLatitude, $fLongitude, "display_name") EndFunc ;==>GetFormattedAddress ; #FUNCTION# ==================================================================================================================== ; Name ..........: GetIPInfo ; Description ...: Obtient les informations basées sur une adresse IP donnée. ; Syntax ........: GetIPInfo($sIPAddress = Default) ; Parameters ....: $sIPAddress - (optionnel) Une chaîne de caractères représentant l'adresse IP (par défaut : IP actuelle). ; Return values .: Array contenant les informations basées sur l'adresse IP donnée. ; Author ........: Numeric ; Modified ......: ; Remarks .......: Documentation complète ; Related .......: ; Link ..........: ; Example .......: Yes ; =============================================================================================================================== Func GetIPInfo($sIPAddress = Default) ; Validation de l'adresse IP If $sIPAddress == Default Then $sIPAddress = "" ElseIf Not StringRegExp($sIPAddress, "\b(?:\d{1,3}\.){3}\d{1,3}\b") Then Return SetError(2, 0, "") EndIf Local $url = "https://ipinfo.io/" & $sIPAddress & "/json" Local $response = _INetGetSource($url) ; Vérification des erreurs de requête If @error Then Return SetError(1, 0, "") EndIf Local $aInfo = [__ExtractJsonValue($response, "city"), __ExtractJsonValue($response, "region"), _ __ExtractJsonValue($response, "country"), __ExtractJsonValue($response, "loc"), _ __ExtractJsonValue($response, "org"), __ExtractJsonValue($response, "timezone")] Return $aInfo EndFunc ;==>GetIPInfo ; #FUNCTION# ==================================================================================================================== ; Name ..........: GetSunriseSunsetTimes ; Description ...: Obtient les heures de lever et de coucher du soleil pour des coordonnées géographiques spécifiques. ; Syntax ........: GetSunriseSunsetTimes($fLatitude, $fLongitude) ; Parameters ....: $fLatitude - Valeur flottante représentant la latitude. ; $fLongitude - Valeur flottante représentant la longitude. ; Return values .: Array contenant les heures de lever et de coucher du soleil au format "HH:MM:SS". ; Author ........: Numeric ; Modified ......: ; Remarks .......: Documentation complète ; Related .......: ; Link ..........: ; Example .......: Yes ; =============================================================================================================================== Func GetSunriseSunsetTimes($fLatitude, $fLongitude) Local $url = "https://api.sunrise-sunset.org/json?lat=" & $fLatitude & "&lng=" & $fLongitude Local $response = _INetGetSource($url) ; Parsez la réponse JSON pour obtenir les heures du lever et du coucher du soleil Local $aSunriseSunset = [__ExtractJsonValue($response, "sunrise"), __ExtractJsonValue($response, "sunset")] If @error Then Return SetError(1, 0, "") EndIf Return $aSunriseSunset EndFunc ;==>GetSunriseSunsetTimes ; #FUNCTION# ==================================================================================================================== ; Name ..........: GetSunriseSunsetTimes ; Description ...: Obtient les heures de lever et de coucher du soleil pour des coordonnées géographiques spécifiques et une date donnée. ; Syntax ........: GetSunriseSunsetTimes($fLatitude, $fLongitude, $sDate = "today") ; Parameters ....: $fLatitude - Valeur flottante représentant la latitude. ; $fLongitude - Valeur flottante représentant la longitude. ; $sDate - [optionnel] Une chaîne de caractères représentant la date (par défaut : "today"). ; Return values .: Array contenant les heures de lever et de coucher du soleil au format "HH:MM:SS". ; Author ........: Numeric ; Modified ......: ; Remarks .......: Documentation complète ; Related .......: ; Link ..........: ; Example .......: Yes ; =============================================================================================================================== Func GetSunriseSunsetTimesSpecDate($fLatitude, $fLongitude, $sDate = "today") Local $url = "https://api.sunrise-sunset.org/json?lat=" & $fLatitude & "&lng=" & $fLongitude & "&date=" & $sDate Local $response = _INetGetSource($url) ; Parsez la réponse JSON pour obtenir les heures du lever et du coucher du soleil Local $aSunriseSunset = [__ExtractJsonValue($response, "sunrise"), __ExtractJsonValue($response, "sunset")] If @error Then Return SetError(1, 0, "") EndIf Return $aSunriseSunset EndFunc ;==>GetSunriseSunsetTimesSpecDate ; #FUNCTION# ==================================================================================================================== ; Name ..........: GetWeatherInfo ; Description ...: Obtient des informations météorologiques pour une adresse ou des coordonnées géographiques spécifiques. ; Syntax ........: GetWeatherInfo($sLocation) ; Parameters ....: $sLocation - Adresse ou coordonnées géographiques pour lesquelles les informations météorologiques doivent être obtenues. ; Return values .: Array contenant les informations météorologiques. ; Author ........: Numeric ; Modified ......: ; Remarks .......: Utilise l'API Open-Meteo pour obtenir les données météorologiques. ; Related .......: ; Link ..........: https://open-meteo.com/ ; Example .......: Yes ; =============================================================================================================================== Func GetWeatherInfo($latitude, $longitude) Local $url = "https://api.open-meteo.com/v1/forecast?latitude=" & $latitude & "&longitude=" & $longitude & "¤t=temperature_2m,windspeed_10m&hourly=temperature_2m,relativehumidity_2m,windspeed_10m" Local $response = _INetGetSource($url) ; Vérification des erreurs de requête If @error Then Return SetError(1, 0, "") EndIf ; Analyse de la réponse JSON en utilisant la fonction __ExtractJsonValue Local $currentTemperature = __ExtractJsonValue($response, "temperature_2m") Local $currentWindSpeed = __ExtractJsonValue($response, "windspeed_10m") ; Vous pouvez ajouter d'autres données météorologiques ici en fonction de la structure JSON de la réponse. ; Créez un tableau pour stocker les informations météorologiques Local $weatherInfo[2] $weatherInfo[0] = $currentTemperature $weatherInfo[1] = $currentWindSpeed Return $weatherInfo EndFunc ;==>GetWeatherInfo ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name ..........: __ExtractJsonValue ; Description ...: Fonction interne pour extraire une valeur JSON à partir de la réponse JSON. ; Syntax ........: __ExtractJsonValue($json, $valueName) ; Parameters ....: $json - Valeur inconnue. ; $valueName - Valeur variante. ; Return values .: Valeur extraite. ; Author ........: Numeric ; Modified ......: ; Remarks .......: Documentation complète ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func __ExtractJsonValue($json, $valueName) ; Utilisation de RegEx pour extraire la valeur JSON Local $pattern = '"' & $valueName & '"\s*:\s*"(.*?)"' Local $result = StringRegExp($json, $pattern, 3) ; Gestion des erreurs If IsArray($result) Then Return $result[0] Else Return SetError(3, 0, "") EndIf EndFunc ;==>__ExtractJsonValue