#include #cs Fonctions de Géolocalisation --------------------------- Ce script AutoIt fournit des fonctions de géolocalisation, notamment l'obtention d'adresses, de coordonnées à partir d'adresses, et bien plus. Auteur : Numeric Version : 1.0 Dernière mise à jour : 26 octobre 2023 Droits d'auteur et mentions légales ----------------------------------- Ce script est protégé par le droit d'auteur © 2023 Numeric. Tous droits réservés. Crédits API et mentions légales ------------------------------- 1. API Nominatim fournie par OpenStreetMap - Copyright : © contributeurs d'OpenStreetMap. - Conditions d'utilisation : https://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy - https://operations.osmfoundation.org/policies/nominatim/ 2. API Sunrise-Sunset - Copyright : © Sunrise-Sunset. - Conditions d'utilisation : https://sunrise-sunset.org/api Conditions d'Utilisation de Sunrise-sunset.org En accédant et en utilisant Sunrise-sunset.org, vous acceptez d'être lié par les conditions d'utilisation. Toute participation à ce site constituera une acceptation de cet accord. Si vous n'acceptez pas de respecter les présentes conditions d'utilisation et la politique de confidentialité, veuillez ne pas utiliser ce site. N'utilisez pas de scripts ou de programmes automatisés pour extraire des données de ce site. Ce site est destiné à un usage personnel uniquement. Certaines informations fournies sur ce site Web peuvent être inexactes et erronées. Sunrise-sunset.org n’est responsable d’aucune de ces erreurs. Le site Web peut également apporter des améliorations et/ou des modifications au site Web à tout moment et sans préavis. Toutes les informations présentes sur Sunrise-sunset.org sont fournies sans garantie d’aucune sorte. Ce site est uniquement à but de divertissement. Pour des raisons de conditions d'utilisation, les fonctions suivantes sont là juste à titre éducatif. il s'agit de : GetSunriseSunsetTimes, GetSunriseSunsetTimesSpecDate, QUI SONT REMPLACEES par la fonction: GetSunriseSunsetTimesUp. 3. API Open-Meteo - Copyright : © Open-Meteo. - Conditions d'utilisation : https://open-meteo.com/ 4. -Copyright : © meteogram.fr" pour obtenir les données sur le lever et le coucher du soleil. Assurez-vous de respecter les conditions d'utilisation du site Web. Avis de non-responsabilité --------------------------- Ce script est fourni tel quel, sans aucune garantie ni engagement d'aucune sorte. L'auteur et les fournisseurs d'API ne sont pas responsables des conséquences ou dommages résultant de l'utilisation de ce script ou des informations qu'il fournit. #ce #cs NOTE: Le type de retour de la majeur partie de ces fonctions est une chaine de caractères "String" même si vous pouvez lire à la sortie de certaines fonctions des valeurs flottantes, il s'agit en réalité d'une chaine de caractères qu'il faudra convertir en entier ou autre type numerique voulu selon vos besoins. Prenez donc la peine de lire le type de retour des fonctions dans la documentation. #ce ; #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 .......: ; ; Exemple d'utilisation de GetAddressInfo ; $latitude = 40.7128 ; $longitude = -74.0060 ; $result = GetAddressInfo($latitude, $longitude) ; If @error Then ; MsgBox(16, "Erreur", "Erreur lors de la récupération des informations.") ; Else ; MsgBox(64, "Informations géographiques", "Informations : " & $result) ; EndIf ; =============================================================================================================================== 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 .......: Les coordonnées contenues dans le array retourné sont de type flottantes. ; Related .......: ; Link ..........: ; Example .......: ; ; Exemple d'utilisation de GetCoordinatesFromAddress ; $address = "1600 Amphitheatre Parkway, Mountain View, CA" ; $coords = GetCoordinatesFromAddress($address) ; If @error Then ; MsgBox(16, "Erreur", "Erreur lors de la récupération des coordonnées.") ; Else ; MsgBox(64, "Coordonnées géographiques", "Latitude : " & $coords[0] & ", Longitude : " & $coords[1]) ; EndIf ; =============================================================================================================================== 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 ..........: GetDirection ; Description ...: Calcule la direction (nord, sud, est, ouest) entre deux coordonnées géographiques. ; Syntax ........: GetDirection($lat1, $lon1, $lat2, $lon2) ; Parameters ....: $lat1 - Latitude du point de départ. ; $lon1 - Longitude du point de départ. ; $lat2 - Latitude de la destination. ; $lon2 - Longitude de la destination. ; Return values .: Chaîne de caractères représentant la direction (nord, sud, est, ouest). ; Author ........: Numeric ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: ; ; Exemple d'utilisation de GetDirection ; $lat1 = 37.7749 ; $lon1 = -122.4194 ; $lat2 = 34.0522 ; $lon2 = -118.2437 ; $direction = GetDirection($lat1, $lon1, $lat2, $lon2) ; MsgBox(64, "Direction", "La direction entre les deux points est : " & $direction) ; =============================================================================================================================== Func GetDirection($latitudePoint1, $longitudePoint1, $latitudePoint2, $longitudePoint2) Local $latitudeDirection, $longitudeDirection, $direction ; Détermine la direction nord ou sud en fonction de la latitude. $latitudeDirection = ($latitudePoint1 > $latitudePoint2) ? "nord" : "sud" $latitudeDirection = ($latitudePoint1 == $latitudePoint2) ? "" : $latitudeDirection ; Détermine la direction est ou ouest en fonction de la longitude. $longitudeDirection = ($longitudePoint1 > $longitudePoint2) ? "ouest" : "est" $longitudeDirection = ($longitudePoint1 == $longitudePoint2) ? "" : $longitudeDirection ; Combine les directions de latitude et de longitude pour obtenir la direction globale. $direction = $latitudeDirection & $longitudeDirection ; Retourne la direction calculée. Return $direction EndFunc ;==>GetDirection ; #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 .......: ; ; Exemple d'utilisation de GetDistanceBetweenCoordinates ; $lat1 = 37.7749 ; $lon1 = -122.4194 ; $lat2 = 34.0522 ; $lon2 = -118.2437 ; $distance = GetDistanceBetweenCoordinates($lat1, $lon1, $lat2, $lon2) ; MsgBox(64, "Distance", "La distance entre les deux points est de " & $distance & " kilomètres.") ; =============================================================================================================================== 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 .......: ; ; Exemple d'utilisation de GetFormattedAddress ; $latitude = 37.7749 ; $longitude = -122.4194 ; $formattedAddress = GetFormattedAddress($latitude, $longitude) ; MsgBox(64, "Adresse formatée", "L'adresse formatée est : " & $formattedAddress) ; =============================================================================================================================== 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 .......: ; ; Exemple d'utilisation de GetIPInfo ; $ipAddress = "8.8.8.8" ; Remplacez ceci par l'adresse IP que vous souhaitez interroger ; $ipInfo = GetIPInfo($ipAddress) ; ; If @error Then ; MsgBox(16, "Erreur", "Une erreur s'est produite lors de la récupération des informations IP.") ; Else ; MsgBox(64, "Informations IP", "Ville : " & $ipInfo[0] & @CRLF & _ ; "Région : " & $ipInfo[1] & @CRLF & "Pays : " & $ipInfo[2] & @CRLF & _ ; "Coordonnées géographiques : " & $ipInfo[3] & @CRLF & "Organisation : " & $ipInfo[4] & @CRLF & _ ; "Fuseau horaire : " & $ipInfo[5]) ; EndIf ; =============================================================================================================================== 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 .......: ; ; Exemple d'utilisation de GetSunriseSunsetTimes ; $latitude = 37.7749 ; Remplacez ceci par la latitude de l'emplacement souhaité ; $longitude = -122.4194 ; Remplacez ceci par la longitude de l'emplacement souhaité ; ; $sunriseSunset = GetSunriseSunsetTimes($latitude, $longitude) ; ; If @error Then ; MsgBox(16, "Erreur", "Une erreur s'est produite lors de la récupération des heures de lever et de coucher du soleil.") ; Else ; MsgBox(64, "Heures de lever et de coucher du soleil", "Lever du soleil : " & $sunriseSunset[0] & @CRLF & "Coucher du soleil : " & $sunriseSunset[1]) ; EndIf ; =============================================================================================================================== 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 ..........: GetSunriseSunsetTimesSpecDate ; 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 ........: GetSunriseSunsetTimesSpecDate($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 ; ; Exemple d'utilisation de GetSunriseSunsetTimesSpecDate ; $latitude = 37.7749 ; Remplacez ceci par la latitude de l'emplacement souhaité ; $longitude = -122.4194 ; Remplacez ceci par la longitude de l'emplacement souhaité ; $date = "2023-10-26" ; Remplacez ceci par la date souhaitée au format "YYYY-MM-DD" ; ; $sunriseSunset = GetSunriseSunsetTimesSpecDate($latitude, $longitude, $date) ; ; If @error Then ; MsgBox(16, "Erreur", "Une erreur s'est produite lors de la récupération des heures de lever et de coucher du soleil.") ; Else ; MsgBox(64, "Heures de lever et de coucher du soleil", "Lever du soleil : " & $sunriseSunset[0] & @CRLF & "Coucher du soleil : " & $sunriseSunset[1]) ; EndIf ; =============================================================================================================================== 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 ..........: GetSunriseSunsetTimesUp ; Description ...: Obtient les heures de lever et de coucher du soleil pour une ville spécifique. ; Syntax ........: GetSunriseSunsetTimesUp($sTown, $sCountry[, $sDate = Default]) ; Parameters ....: $sTown - Chaîne de caractères représentant le nom de la ville. ; $sCountry - Chaîne de caractères représentant le nom du pays. ; $sDate - [optionnel] Chaîne de caractères représentant la date (par défaut : Default). ; Return values .: Chaîne de caractères contenant les heures de lever et de coucher du soleil (par exemple, "HH:MM | HH:MM") ou une valeur d'erreur. ; Author ........: Numeric ; Modified ......: ; Remarks .......: Cette fonction dépend du site Web tiers "https://meteogram.fr" pour obtenir les données sur le lever et le coucher du soleil. Assurez-vous de respecter les conditions d'utilisation du site Web. ; Related .......: ; Link ..........: ; Example .......: ; Obtenez les heures de lever et de coucher du soleil pour Paris, France, aujourd'hui. ; $sSunriseSunset = GetSunriseSunsetTimesUp("Paris", "France") ; If @error Then ; MsgBox(16, "Erreur", "Une erreur s'est produite : " & @error) ; Else ; MsgBox(64, "Heures de lever et de coucher du soleil", "À Paris, France, aujourd'hui : " & $sSunriseSunset) ; EndIf ; =============================================================================================================================== Func GetSunriseSunsetTimesUp($sTown, $sCountry, $sDate = Default) If $sTown == "" Or $sCountry == "" Then Return SetError(1, 0, "") EndIf Local $iCurrentDay = "" Local $iCurrentMonth = "" If $sDate == Default Then $iCurrentDay = @MDAY $iCurrentMonth = @MON $sDate = $iCurrentDay & "/" & $iCurrentMonth EndIf ; Validation de la date Local $iDateLen = StringLen($sDate) Local $bCanSplitDate = False, $sDelimiter = "" If Not StringInStr($sDate, "/") And Not StringInStr($sDate, ":") Then If $iDateLen <> 2 Then Return SetError(2, 0, "") EndIf Else If $iDateLen <> 5 Then Return SetError(3, 0, "") EndIf $bCanSplitDate = True EndIf If StringInStr($sDate, "/") And StringInStr($sDate, ":") Then Return SetError(4, 0, "") EndIf If $bCanSplitDate Then $sDelimiter = (StringInStr($sDate, "/") <> 0) ? "/" : ":" Local $aSplitDate = StringSplit($sDate, $sDelimiter) $iCurrentDay = $aSplitDate[1] $iCurrentMonth = $aSplitDate[2] Else $iCurrentDay = $sDate EndIf If $iCurrentMonth = "" Then $iCurrentMonth = @MON EndIf Local $sUrl = "https://meteogram.fr/soleil/" & StringLower($sCountry) & "/" & StringLower($sTown) & "/" Local $sResponse = _INetGetSource($sUrl) If Not $sResponse Then Return SetError(5, 0, "") EndIf Local $oHTMLFileWrapper = ObjCreate("HTMLFile") If Not IsObj($oHTMLFileWrapper) Then Return SetError(6, 0, "") $oHTMLFileWrapper.write($sResponse) Local $oElement = $oHTMLFileWrapper.getElementById("tabelSlunce") If Not IsObj($oElement) Then Return SetError(7, 0, "") Local $sHTML = $oElement.outerHTML Local $oHTMLFile = ObjCreate("HTMLFile") If Not IsObj($oHTMLFile) Then Return SetError(7, 0, "") $oHTMLFile.write($sHTML) $oHTMLFileWrapper = Null Local $oBodyElements = $oHTMLFile.getElementsByTagName("tbody") If Not IsObj($oBodyElements) Then Return SetError(8, 0, "") Local $oBodyChildrenAsTr = $oBodyElements.item(0).children If Not IsObj($oBodyChildrenAsTr) Then Return SetError(9, 0, "") Local $iTotalDays = $oBodyChildrenAsTr.length If Int($iCurrentDay) >= $iTotalDays Then Return SetError(10, 0, "") Local $oTrChildrenAsTd = $oBodyChildrenAsTr.item(Int($iCurrentDay)).children If Not IsObj($oTrChildrenAsTd) Then Return SetError(11, 0, "") If (Int($iCurrentMonth) * 2) >= $oTrChildrenAsTd.length Then Return SetError(11, 0, "") Local $sSunriseTime = $oTrChildrenAsTd.item((Int($iCurrentMonth) * 2) - 1).innerText Local $sSunsetTime = $oTrChildrenAsTd.item((Int($iCurrentMonth) * 2)).innerText Return $sSunriseTime & " | " & $sSunsetTime EndFunc ;==>GetSunriseSunsetTimesUp ; #FUNCTION# ==================================================================================================================== ; Name ..........: GetWeatherInfo ; Description ...: Obtient des informations météorologiques pour des coordonnées géographiques spécifiques. ; Syntax ........: GetWeatherInfo($latitude, $longitude) ; Parameters ....: $latitude - Latitude des coordonnées géographiques. ; $longitude - Longitude des coordonnées géographiques. ; Return values .: une chaine formatée 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 .......: ; ; Exemple d'utilisation de GetWeatherInfo ; $latitude = 37.7749 ; Remplacez ceci par la latitude de l'emplacement souhaité ; $longitude = -122.4194 ; Remplacez ceci par la longitude de l'emplacement souhaité ; ; $weatherInfo = GetWeatherInfo($latitude, $longitude) ; ; If @error Then ; MsgBox(16, "Erreur", "Une erreur s'est produite lors de la récupération des informations météorologiques.") ; Else ; MsgBox(64, "Informations Météorologiques", "Informations météorologiques : " & $weatherInfo) ; EndIf ; =============================================================================================================================== 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 ; Utilisation d'une expression régulière pour extraire les données entre "current:{" et la première occurrence de "}" Local $result = StringRegExp($response, '"current":\s*{([^}]*)}', 3) If Not IsArray($result) Then Return SetError(2, 0, "") Return $result[0] 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 - Chaîne de caractères JSON contenant les données. ; $valueName - Nom de la valeur JSON à extraire. ; Return values .: Valeur extraite au format de chaîne de caractères. ; Author ........: Numeric ; Modified ......: ; Remarks .......: Cette fonction est utilisée pour extraire une valeur spécifique à partir d'une chaîne de caractères JSON. ; Le paramètre $valueName doit correspondre exactement au nom de la valeur à extraire. ; NB: Cette fonction n'extrait que les valeurs Json entourées de guillements comme les chaines de caractères. : "{name":"john"} ; La prochaine mise à jour prendra en charge les valeurs Json sans guillements. {"age":30} ; Local $pattern = '"' & $valueName & '"\s*:\s*"(.*?)"|"' & $valueName & '"\s*:\s*(\S+)' ; Related .......: ; Link ..........: ; Example .......: Yes ; ; Exemple d'utilisation de __ExtractJsonValue ; Local $jsonString = '{"name": "John", "age": 30, "city": "New York"}' ; Local $valueName = "name" ; ; Local $extractedValue = __ExtractJsonValue($jsonString, $valueName) ; ; If @error Then ; MsgBox(16, "Erreur", "Une erreur s'est produite lors de l'extraction de la valeur.") ; Else ; MsgBox(64, "Valeur Extraite", "La valeur extraite est : " & $extractedValue) ; EndIf ; =============================================================================================================================== 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