Browse Source

Premier jet de l'ajout du service français Meteo-Concept (meteoc) qui est limité à la France, Belgique, Luxembourg et Andorre.

Les prévisions et infos sont disponibles, en attente pour les conditions TR.
Correction dans la configuration, les items de langue.
Suppression d'une référence à Wunderground qui a disparu.
master
Eric Lupinacci 1 year ago
parent
commit
6f41af79d5
  1. 23
      formulaires/configurer_rainette_service.html
  2. 6
      formulaires/configurer_rainette_service.php
  3. 1
      inc/meteo_charger.php
  4. 10
      inc/rainette_debusquer.php
  5. 9
      inc/rainette_normaliser.php
  6. 10
      inc/rainette_requeter.php
  7. 96
      lang/meteoc_fr.php
  8. 2
      lang/rainette_fr.php
  9. 3
      paquet.xml
  10. 8
      rainette_fonctions.php
  11. 257
      services/meteoc.php
  12. 226
      services/meteoc.yaml

23
formulaires/configurer_rainette_service.html

@ -9,10 +9,10 @@
<fieldset>
<legend><:rainette:legende_configurer_inscription:></legend>
[(#REM) <!-- Configuration de la clé d'inscription si requise --> ]
[(#ENV{service}|=={weather}|oui)
[(#ENV{service}|=={openmeteo}|oui)
<p><:rainette:explication_configurer_cle_aucune:></p>
]
[(#ENV{service}|=={weather}|non)
[(#ENV{service}|=={openmeteo}|non)
<div class="editer-groupe">
#SET{type_cle, obligatoire}
[(#SET{url, [<a class="spip_out"[ href="(#ENV{_configuration/enregistrement/lien})"] target="_blank">(#ENV{_configuration/enregistrement/titre})</a>]})]
@ -34,21 +34,22 @@
<legend><:rainette:legende_configurer_affichage:></legend>
<div class="editer-groupe">
[(#REM) <!-- Configuration du système d'unité à utiliser pour les données météo --> ]
#SET{disable_unite, ''}
[(#ENV{service}|=={meteoc}|oui)#SET{disable_unite, s}]
[(#SAISIE{radio, unite,
data=#ARRAY{m, <:rainette:label_unite_metrique:>, s, <:rainette:label_unite_standard:>},
disable_choix=#GET{disable_unite},
explication=<:rainette:explication_configurer_unite:>,
label=<:rainette:label_unite:>,
})]
[(#ENV{service}|=={weather}|non)
[(#REM) <!-- Configuration du système d'icônes à utiliser (sauf pour weather) --> ]
[(#SAISIE{radio, condition,
data=#ENV{_themes/types},
disable_choix=#ENV{_themes/disabled},
explication=<:rainette:explication_configurer_icone:>,
label=<:rainette:label_icone:>,
})]
]
[(#REM) <!-- Configuration du système d'icônes à utiliser (sauf pour meteoc qui est limité à la France) --> ]
[(#SAISIE{radio, condition,
data=#ENV{_themes/types},
disable_choix=#ENV{_themes/disabled},
explication=<:rainette:explication_configurer_icone:>,
label=<:rainette:label_icone:>,
})]
[(#REM) <!-- Configuration du thème d'icônes distant à utiliser pour le service --> ]
[(#ENV{_themes/distants}|oui)

6
formulaires/configurer_rainette_service.php

@ -59,7 +59,7 @@ function formulaires_configurer_rainette_service_charger($service) {
'weather' => _T('rainette:label_icone_weather')
];
// -- Présence de chaque type de thème pour le service concerné
$valeurs['_themes']['icone_api'] = !in_array($service, array('accuweather'));
$valeurs['_themes']['icone_api'] = !in_array($service, array('accuweather', 'meteoc'));
$valeurs['_themes']['distants'] = rainette_lister_themes($service, 'api');
$valeurs['_themes']['locaux'] = rainette_lister_themes($service);
$valeurs['_themes']['weather'] = $service != 'weather'
@ -67,8 +67,8 @@ function formulaires_configurer_rainette_service_charger($service) {
: array();
// -- Construction du disable pour chaque choix de type de thème
$themes_disabled = $valeurs['_themes']['icone_api'] ? '' : $service;
$themes_disabled .= $valeurs['_themes']['locaux'] ? '' : ($themes_disabled ? '' : ',') . "${service}_local";
$themes_disabled .= $valeurs['_themes']['weather'] ? '' : ($themes_disabled ? '' : ',') . 'weather';
$themes_disabled .= $valeurs['_themes']['locaux'] ? '' : ($themes_disabled ? ',' : '') . "${service}_local";
$themes_disabled .= $valeurs['_themes']['weather'] ? '' : ($themes_disabled ? ',' : '') . 'weather';
$valeurs['_themes']['disabled'] = $themes_disabled;
// On positionne le meta casier car la fonction de recensement automatique n'est plus appelée ni ne pourrait

1
inc/meteo_charger.php

@ -39,6 +39,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* - `weatheapi` pour WeatherAPI
* - `accuweather` pour AccuWeather
* - `wwo` pour World Weather Online
* - `meteoc` pour Meteo-Concept
*
* @return array Le contenu du fichier cache contenant les données à jour demandées.
*/

10
inc/rainette_debusquer.php

@ -194,6 +194,8 @@ function rainette_debug_jeu_defaut() {
foreach ($services as $_service => $_nom) {
if ($_service == 'accuweather') {
$jeu[$_service] = '623';
} elseif ($_service == 'meteoc') {
$jeu[$_service] = '75101';
} else {
$jeu[$_service] = 'Paris,France';
}
@ -218,14 +220,10 @@ function rainette_debug_afficher_execution() {
foreach ($services as $_service => $_nom) {
$configuration = lire_config("rainette_${_service}/service", array());
$debug[$_service]['dernier_appel'] = isset($execution[$_service]['dernier_appel'])
? $execution[$_service]['dernier_appel']
: '--';
$debug[$_service]['dernier_appel'] = $execution[$_service]['dernier_appel'] ?? '--';
foreach (array('year', 'month', 'day', 'hour', 'minute', 'second') as $_periode) {
if (isset($configuration['offres']['limites'][$_periode])) {
$compteur = isset($execution[$_service]['compteurs'][$_periode])
? $execution[$_service]['compteurs'][$_periode]
: '--';
$compteur = $execution[$_service]['compteurs'][$_periode] ?? '--';
$debug[$_service][$_periode] = "${compteur} / {$configuration['offres']['limites'][$_periode]}";
} else {
$debug[$_service][$_periode] = '';

9
inc/rainette_normaliser.php

@ -26,6 +26,12 @@ if (!defined('_RAINETTE_REGEXP_LIEU_WEATHER_ID')) {
*/
define('_RAINETTE_REGEXP_LIEU_WEATHER_ID', '#[a-zA-Z]{4}\d{4}#i');
}
if (!defined('_RAINETTE_REGEXP_LIEU_INSEE_ID')) {
/**
* Regexp permettant de reconnaître un lieu au format Weather ID.
*/
define('_RAINETTE_REGEXP_LIEU_INSEE_ID', '#[0-9ABab]{5}#i');
}
/**
@ -460,6 +466,9 @@ function lieu_normaliser($lieu, &$format_lieu = '') {
} elseif (preg_match(_RAINETTE_REGEXP_LIEU_IP, $lieu_normalise, $match)) {
$format_lieu = 'adresse_ip';
$lieu_normalise = $match[0];
} elseif (preg_match(_RAINETTE_REGEXP_LIEU_INSEE_ID, $lieu_normalise, $match)) {
$format_lieu = 'insee_id';
$lieu_normalise = $match[0];
} elseif (intval($lieu_normalise)) {
$format_lieu = 'city_id';
} else {

10
inc/rainette_requeter.php

@ -23,8 +23,16 @@ if (!defined('_ECRIRE_INC_VERSION')) {
function requeter($url, $configuration, $service) {
// Acquisition des données spécifiées par l'url
// - on demande le transcodage de la réponse
// - on ajoute le format accepté par la réponse car certains services l'utilise à la place d'un paramètre d'URL
include_spip('inc/distant');
$flux = recuperer_url($url, array('transcoder' => true));
$flux = recuperer_url(
$url,
array(
'headers' => array('Accept' => 'application/' . $configuration['format_flux']),
'transcoder' => true
)
);
// On loge la date de l'appel et on incrémente les compteurs de requêtes du service.
include_spip('inc/config');

96
lang/meteoc_fr.php

@ -0,0 +1,96 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// M
'meteo_0' => 'Soleil',
'meteo_1' => 'Peu nuageux',
'meteo_2' => 'Ciel voilé',
'meteo_3' => 'Nuageux',
'meteo_4' => 'Très nuageux',
'meteo_5' => 'Couvert',
'meteo_6' => 'Brouillard',
'meteo_7' => 'Brouillard givrant',
'meteo_10' => 'Pluie faible',
'meteo_11' => 'Pluie modérée',
'meteo_12' => 'Pluie forte',
'meteo_13' => 'Pluie faible verglaçante',
'meteo_14' => 'Pluie modérée verglaçante',
'meteo_15' => 'Pluie forte verglaçante',
'meteo_16' => 'Bruine',
'meteo_20' => 'Neige faible',
'meteo_21' => 'Neige modérée',
'meteo_22' => 'Neige forte',
'meteo_30' => 'Pluie et neige mêlées faibles',
'meteo_31' => 'Pluie et neige mêlées modérées',
'meteo_32' => 'Pluie et neige mêlées fortes',
'meteo_40' => 'Averses de pluie locales et faibles',
'meteo_41' => 'Averses de pluie locales',
'meteo_42' => 'Averses locales et fortes',
'meteo_43' => 'Averses de pluie faibles',
'meteo_44' => 'Averses de pluie',
'meteo_45' => 'Averses de pluie fortes',
'meteo_46' => 'Averses de pluie faibles et fréquentes',
'meteo_47' => 'Averses de pluie fréquentes',
'meteo_48' => 'Averses de pluie fortes et fréquentes',
'meteo_60' => 'Averses de neige localisées et faibles',
'meteo_61' => 'Averses de neige localisées',
'meteo_62' => 'Averses de neige localisées et fortes',
'meteo_63' => 'Averses de neige faibles',
'meteo_64' => 'Averses de neige',
'meteo_65' => 'Averses de neige fortes',
'meteo_66' => 'Averses de neige faibles et fréquentes',
'meteo_67' => 'Averses de neige fréquentes',
'meteo_68' => 'Averses de neige fortes et fréquentes',
'meteo_70' => 'Averses de pluie et neige mêlées localisées et faibles',
'meteo_71' => 'Averses de pluie et neige mêlées localisées',
'meteo_72' => 'Averses de pluie et neige mêlées localisées et fortes',
'meteo_73' => 'Averses de pluie et neige mêlées faibles',
'meteo_74' => 'Averses de pluie et neige mêlées',
'meteo_75' => 'Averses de pluie et neige mêlées fortes',
'meteo_76' => 'Averses de pluie et neige mêlées faibles et nombreuses',
'meteo_77' => 'Averses de pluie et neige mêlées fréquentes',
'meteo_78' => 'Averses de pluie et neige mêlées fortes et fréquentes',
'meteo_100' => 'Orages faibles et locaux',
'meteo_101' => 'Orages locaux',
'meteo_102' => 'Orages fort et locaux',
'meteo_103' => 'Orages faibles',
'meteo_104' => 'Orages',
'meteo_105' => 'Orages forts',
'meteo_106' => 'Orages faibles et fréquents',
'meteo_107' => 'Orages fréquents',
'meteo_108' => 'Orages forts et fréquents',
'meteo_120' => 'Orages faibles et locaux de neige ou grésil',
'meteo_121' => 'Orages locaux de neige ou grésil',
'meteo_122' => 'Orages locaux de neige ou grésil',
'meteo_123' => 'Orages faibles de neige ou grésil',
'meteo_124' => 'Orages de neige ou grésil',
'meteo_125' => 'Orages de neige ou grésil',
'meteo_126' => 'Orages faibles et fréquents de neige ou grésil',
'meteo_127' => 'Orages fréquents de neige ou grésil',
'meteo_128' => 'Orages fréquents de neige ou grésil',
'meteo_130' => 'Orages faibles et locaux de pluie et neige mêlées ou grésil',
'meteo_131' => 'Orages locaux de pluie et neige mêlées ou grésil',
'meteo_132' => 'Orages fort et locaux de pluie et neige mêlées ou grésil',
'meteo_133' => 'Orages faibles de pluie et neige mêlées ou grésil',
'meteo_134' => 'Orages de pluie et neige mêlées ou grésil',
'meteo_135' => 'Orages forts de pluie et neige mêlées ou grésil',
'meteo_136' => 'Orages faibles et fréquents de pluie et neige mêlées ou grésil',
'meteo_137' => 'Orages fréquents de pluie et neige mêlées ou grésil',
'meteo_138' => 'Orages forts et fréquents de pluie et neige mêlées ou grésil',
'meteo_140' => 'Pluies orageuses',
'meteo_141' => 'Pluie et neige mêlées à caractère orageux',
'meteo_142' => 'Neige à caractère orageux',
'meteo_210' => 'Pluie faible intermittente',
'meteo_211' => 'Pluie modérée intermittente',
'meteo_212' => 'Pluie forte intermittente',
'meteo_220' => 'Neige faible intermittente',
'meteo_221' => 'Neige modérée intermittente',
'meteo_222' => 'Neige forte intermittente',
'meteo_230' => 'Pluie et neige mêlées',
'meteo_231' => 'Pluie et neige mêlées',
'meteo_232' => 'Pluie et neige mêlées',
'meteo_235' => 'Averses de grêle',
);

2
lang/rainette_fr.php

@ -54,7 +54,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'erreur_modele_periodicite' => 'Le modèle @modele@ n\'est pas compatible avec la périodicité horaire demandée.',
'erreur_modele_service' => 'Le service @service@ ne fournit pas de prévisions avec une périodicité horaire compatible avec le modèle @modele@.',
'erreur_reponse_service_conditions' => 'Le service @service@ a renvoyé une erreur lors de l\'acquisition des conditions météorologiques du lieu @lieu@.',
'erreur_reponse_service_infos' => 'Le service @service@ ne fournit actuellement aucune condition météorologique sur le lieu @lieu@.',
'erreur_reponse_service_infos' => 'Le service @service@ ne fournit actuellement aucune information sur le lieu @lieu@.',
'erreur_reponse_service_previsions' => 'Le service @service@ ne fournit actuellement aucune prévision météorologique sur le lieu @lieu@.',
'erreur_service_inconnu' => 'L\'identifiant de service @service@ est erroné.',
'erreur_service_inactif' => 'Le service @service@ choisi a été désactivé car il ne fournit plus de données météorologiques.',

3
paquet.xml

@ -1,7 +1,6 @@
<paquet
prefix="rainette"
categorie="divers"
version="4.0.0"
version="4.1.0"
etat="stable"
compatibilite="]3.2.999;4.0.*]"
logo="rainette.svg"

8
rainette_fonctions.php

@ -441,11 +441,9 @@ function rainette_lister_themes($service, $source = 'local') {
if (strtolower($source) == 'api') {
// Certains services proposent des thèmes d'icones accessibles via l'API.
// C'est le cas de wunderground.
if (in_array($service, array('wunderground', 'owm'))) {
$cles = $service == 'wunderground'
? array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k')
: array('n2x', 'n1x', 'o1x');
// C'est le cas de owm.
if ($service == 'owm') {
$cles = array('n2x', 'n1x', 'o1x');
foreach ($cles as $_cle) {
$themes[$service][$source][$_cle] = _T("rainette:label_theme_${service}_${_cle}");
}

257
services/meteoc.php

@ -0,0 +1,257 @@
<?php
/**
* Ce fichier contient la configuration et l'ensemble des fonctions implémentant le service Méteo-Concept (meteoc).
* Ce service est capable de fournir des données au format JSON ou XML.
*
* @package SPIP\RAINETTE\SERVICES\METEOC
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
// ------------------------------------------------------------------------------------------------
// Les fonctions qui suivent définissent l'API standard du service et sont appelées par la fonction
// unique de chargement des données météorologiques `meteo_charger()`.
// ------------------------------------------------------------------------------------------------
/**
* Construit l'url de la requête correspondant au lieu, au type de données et à la configuration utilisateur
* du service (par exemple, le code d'inscription, le format des résultats...).
*
* @api
* @uses lieu_normaliser()
*
* @param string $lieu
* Lieu pour lequel on acquiert les données météorologiques.
* @param string $mode
* Type de données météorologiques. Les valeurs possibles sont `infos`, `conditions` ou `previsions`.
* @param int $periodicite
* La périodicité horaire des prévisions :
* - `24`, `12`, `6`, `3` ou `1`, pour le mode `previsions`
* - `0`, pour les modes `conditions` et `infos`
* @param array $configuration
* Configuration complète du service, statique et utilisateur.
*
* @return string
* URL complète de la requête.
*/
function meteoc_service2url($lieu, $mode, $periodicite, $configuration) {
// On normalise le lieu et on récupère son format.
// Le service accepte les coordonnées et la code INSEE
$lieu_normalise = lieu_normaliser($lieu, $format_lieu);
if ($format_lieu == 'latitude_longitude') {
$query = "latlng=${lieu_normalise}";
} else {
// Format INSEE
$query = "insee=${lieu_normalise}";
}
// On construit le mode
if ($mode === 'infos') {
$demande = 'location/city';
// On demande de considérer les pays étrangers si on identifie la ville par ses coordonnées
if ($format_lieu == 'latitude_longitude') {
$query .= '&world=true';
}
} elseif ($mode === 'conditions') {
$demande = '';
} else {
$demande = 'forecast/daily';
}
return
$configuration['endpoint_requete']
. $demande
. '?token=' . $configuration['inscription']
. '&' . $query;
}
/**
* @param array $erreur
*
* @return bool
*/
function meteoc_erreur_verifier($erreur) {
// Initialisation
$est_erreur = false;
// Une erreur est uniquement décrite par un message.
if (!empty($erreur['message'])) {
$est_erreur = true;
}
return $est_erreur;
}
/**
* Complète par des données spécifiques au service le tableau des informations issu
* uniquement de la lecture du flux.
*
* @api
*
* @param array $tableau
* Tableau standardisé des conditions contenant uniquement les données fournies sans traitement
* par le service.
* @param array $configuration
* Configuration complète du service, statique et utilisateur.
*
* @return array
* Tableau standardisé des conditions météorologiques complété par les données spécifiques
* du service.
*/
function meteoc_complement2infos($tableau, $configuration) {
if ($tableau) {
if (empty($tableau['pays'])) {
// France : le pays n'est pas précisé, on le rajoute
$tableau['pays'] = 'France';
$tableau['pays_iso2'] = 'FR';
} else {
// Pays limitrophes : Belgique, Luxembourg et Andorre. On rajoute l'ISO alpha-2
$pays = strtolower($tableau['pays']);
switch($pays) {
case 'belgique':
$tableau['pays_iso2'] = 'BE';
break;
case 'luxembourg':
$tableau['pays_iso2'] = 'LU';
break;
case 'andorre':
$tableau['pays_iso2'] = 'AD';
break;
}
}
}
return $tableau;
}
/**
* Complète par des données spécifiques au service le tableau des conditions issu
* uniquement de la lecture du flux.
*
* @api
*
* @param array $tableau
* Tableau standardisé des conditions contenant uniquement les données fournies sans traitement
* par le service.
* @param array $configuration
* Configuration complète du service, statique et utilisateur.
*
* @return array
* Tableau standardisé des conditions météorologiques complété par les données spécifiques
* du service.
*/
function meteoc_complement2conditions($tableau, $configuration) {
if ($tableau) {
// Compléter le tableau standard avec les états météorologiques calculés
etat2resume_meteoc($tableau, $configuration);
}
return $tableau;
}
/**
* Complète par des données spécifiques au service le tableau des prévisions issu
* uniquement de la lecture du flux.
*
* @api
*
* @param array $tableau
* Tableau standardisé des conditions contenant uniquement les données fournies sans traitement
* par le service.
* @param array $configuration
* Configuration complète du service, statique et utilisateur.
* @param int $index_periode
* Index où trouver et ranger les données. Cet index n'est pas utilisé pour les conditions
*
* @return array
* Tableau standardisé des conditions météorologiques complété par les données spécifiques
* du service.
*/
function meteoc_complement2previsions($tableau, $configuration, $index_periode) {
if (($tableau) and ($index_periode > -1)) {
include_spip('inc/rainette_convertir');
// Calcul de la direction du vent (16 points), celle-ci n'étant pas fournie nativement par owm
$tableau['direction_vent'] = angle2direction($tableau['angle_vent']);
// Conversion en système impérial
// --> Etant donné que le service ne concerne que les pays France, Luxembourg, Belgique et Andorre, on
// ne propose pas la conversion en système impérial.
// Compléter le tableau standard avec les états météorologiques calculés
etat2resume_meteoc($tableau, $configuration);
}
return $tableau;
}
/**
* ---------------------------------------------------------------------------------------------
* Les fonctions qui suivent sont des utilitaires uniquement appelées par les fonctions de l'API
* ---------------------------------------------------------------------------------------------
*/
/**
* Calcule les états en fonction des états météorologiques natifs fournis par le service.
*
* @internal
*
* @param array $tableau
* Tableau standardisé des conditions contenant uniquement les données fournies sans traitement
* par le service. Le tableau est mis à jour et renvoyé à l'appelant.
* @param array $configuration
* Configuration complète du service, statique et utilisateur.
*
* @return void
*/
function etat2resume_meteoc(&$tableau, $configuration) {
if ($tableau['code_meteo']) {
// Determination de l'indicateur jour/nuit qui permet de choisir le bon icone
// Pour ce service aucun indicateur n'est disponible, on positionne la période à 0 tout le temps
$tableau['periode'] = 0;
// Détermination du résumé à afficher:
// - Meteo-Concept ne fourni pas de résumé dans l'API, seul le code est fourni. Rainette construit donc
// un fichier de langue spécifique initialisé en français par le tableau fourni par le service.
$tableau['resume'] = _T('meteoc:meteo_' . $tableau['code_meteo']);
// Determination de l'icone qui sera affiché.
// -- on stocke le code afin de le fournir en alt dans la balise img
$tableau['icone'] = array();
$tableau['icone']['code'] = $tableau['code_meteo'];
// -- on calcule le chemin complet de l'icone.
if ($configuration['condition'] == $configuration['alias']) {
// On affiche l'icône natif fourni par le service et désigné par son url
// en faisant une copie locale dans IMG/.
// --> pas disponible actuellement pour Méteo-Concept
} else {
include_spip('inc/rainette_normaliser');
if ($configuration['condition'] == "{$configuration['alias']}_local") {
// On affiche un icône d'un thème local compatible avec Méteo-Concept.
// --> pas disponible actuellement pour Méteo-Concept
} else {
// On affiche l'icône correspondant au code météo transcodé dans le système weather.com.
$chemin = icone_weather_normaliser(
$tableau['code_meteo'],
$configuration['theme_weather'],
$configuration['transcodage_weather'],
$tableau['periode']
);
}
include_spip('inc/utils');
$tableau['icone']['source'] = find_in_path($chemin);
}
}
}

226
services/meteoc.yaml

@ -0,0 +1,226 @@
# Template du YAML de configuration du service <nom> (<id>)
# -----------------------------------------------------------------------------------------------
#
# Il est composé de 5 blocs, à savoir :
# - service : la configuration du service lui-même, son titre, son id, ses caractéristiques...
# - infos : la configuration du mash-up pour les informations sur le lieu de la météo
# - conditions : la configuration du mash-up pour les conditions temps réel
# - previsions : la configuration du mash-up pour les prévisions
# - erreurs : la configuration du mash-up pour les erreurs fournies par le service
#
# Si un champ vaut la valeur par défaut il est possible de l'omettre.
# -----------------------------------------------------------------------------------------------
# Bloc service : caractéristiques du service
# ------------------------------------------
service:
# -- Identification: saisir le nom complet du service
nom: 'Meteo-Concept'
# -- URL de base des requêtes et des icones (éventuellement)
endpoint_requete: 'https://api.meteo-concept.com/api/'
endpoint_icone: ''
# -- Activité: par défaut à true, donc à laisser en commentaire. A mettre à false si on veut déprécier le service
actif: false
# -- Liens vers les crédits et titre de la page (pour les affichages / modèles)
# Le logo, si il existe, est chargé automatiquement à partir du chemin /services/images/<id>.png
credits:
titre: 'Credits'
lien: 'https://api.meteo-concept.com/'
# -- Liens vers les termes d'utilisation (pour la page de configuration)
termes:
titre: 'Licences'
lien: 'https://api.meteo-concept.com/cgv'
# -- Liens la page d'enregistrement (pour la page de configuration)
enregistrement:
titre: 'Inscription'
lien: 'https://api.meteo-concept.com/register/'
# -- Taille de la clé d'enregistrement en général de 32 caractères (valeur par défaut)
taille_cle: 64
# -- Liens vers les offres de service (pour la page de configuration et les rafraichissements)
offres:
titre: 'Tarifs'
lien: 'https://api.meteo-concept.com/pricing'
# -- Indique si il existe une offre gratuite.
#gratuite: true
# -- Les limites sont exprimées via les périodes year, month, day, hour, minute et second dans cet ordre.
# Seules les périodes utilisées sont à fournir.
limites: { day: 500 }
# -- Liste des langues fournies par le service
langues:
# -- langues dont le code est identique à celui de SPIP: par défaut initialisé au singleton 'en' qui est aussi la
# valeur par défaut
codes_spip: [ 'fr' ]
# -- langues dont le code est différent de celui de SPIP.
# Le champ est rempli par la liste des couples (code service, code spip)
codes_non_spip: {}
# -- langage par défaut est 'en'.
defaut: 'fr'
# -- Transcodage du code méteo retourné par le service avec ceux de Weather. Ceci permet d'utiliser les nombreux
# jeux d'icones existant.
# Chaque code méteo est associé à un tableau [x, y] où x est le code Weather jour et y le code Weather nuit
transcodage_weather:
200: [ 4, 4 ]
201: [ 4, 4 ]
# -- Valeurs par défauts des paramètres modifiables du service (page de configuration)
# En général, seuls les champs theme et theme_local sont à remplir, les autres sont initialisés avec le défaut
defauts:
# -- Clé d'enregistrement fournie par le service. A remplir avec la valeur dans le formulaire.
#inscription: ''
# -- Système métrique par défaut
#unite: 'm'
# -- Mode d'affichage des icones méteo. On privilégie par défaut les icones du service si il existent
#condition: '<id>'
theme: ''
theme_local: ''
# -- Thème Sticker de weather qui est toujours disponible dans Rainette
#theme_weather: 'sticker'
# Bloc infos : mash-up des informations géographiques
# ---------------------------------------------------
infos:
# -- Période de rafraichissement: par défaut à un mois, inutile de le modifier pour chaque service
#periode_maj: 2592000
# -- Format des réponse: par défaut le JSON, inutile de le modifier pour chaque service sauf si pas supporté
#format_flux: 'json'
# -- Index de base dans le tableau de réponse: peut-être une liste d'index éventuellement vide
cle_base: [ 'city' ]
donnees:
ville:
cle: [ 'name' ]
pays:
cle: [ 'country' ]
pays_iso2:
cle: [ ]
region:
cle: [ ]
longitude:
cle: [ 'longitude' ]
latitude:
cle: [ 'latitude' ]
# Bloc conditions : mash-up des conditions temps réel
# ---------------------------------------------------
conditions:
# -- Période de rafraichissement: par défaut à 2 heures, inutile de le modifier pour chaque service
#periode_maj: 7200
# -- Format des réponse: par défaut le JSON, inutile de le modifier pour chaque service sauf si pas supporté
#format_flux: 'json'
# -- Index de base dans le tableau de réponse: peut-être une liste d'index éventuellement vide
cle_base: [ ]
donnees:
derniere_maj:
cle: [ 'dt' ]
station:
cle: [ ]
temperature_reelle:
cle: [ 'main', 'temp' ]
temperature_ressentie:
cle: [ 'main', 'feels_like' ]
vitesse_vent:
cle: [ 'wind', 'speed' ]
angle_vent:
cle: [ 'wind', 'deg' ]
direction_vent:
cle: [ ]
precipitation:
cle: [ ]
humidite:
cle: [ 'main', 'humidity' ]
point_rosee:
cle: [ ]
pression:
cle: [ 'main', 'pressure' ]
tendance_pression:
cle: [ ]
visibilite:
cle: [ 'visibility' ]
nebulosite:
cle: [ 'clouds', 'all' ]
indice_uv:
cle: [ ]
code_meteo:
cle: [ 'weather', 0, 'id' ]
icon_meteo:
cle: [ 'weather', 0, 'icon' ]
desc_meteo:
cle: [ 'weather', 0, 'description' ]
trad_meteo:
cle: [ ]
jour_meteo:
cle: [ ]
# Bloc previsions : mash-up des prévisions
# ----------------------------------------
previsions:
# -- Période de rafraichissement: par défaut à 4 heures, inutile de le modifier pour chaque service
#periode_maj: 14400
# -- Format des réponse: par défaut le JSON, inutile de le modifier pour chaque service sauf si pas supporté
#format_flux: 'json'
# -- Périodicités disponibles pour les prévisions: peut prendre les valeurs 1, 3, 6, 12, 24. Pour chacune
# il faut préciser le nombre de jours de prévisions miximum disponibles
periodicites:
24: { max_jours: 14 }
# -- Périodicité par défaut à 24h. A conserver ainsi sauf si le service ne propose par cette périodicité
#periodicite_defaut: 24
# -- Index de base dans le tableau de réponse: peut-être une liste d'index éventuellement vide
cle_base: [ 'forecast' ]
# -- Index des données heure si le service possède une structure par heure
cle_heure: [ ]
structure_heure: false
donnees:
date:
cle: [ 'datetime' ]
heure:
cle: [ ]
lever_soleil:
cle: [ ]
coucher_soleil:
cle: [ ]
temperature:
cle: [ ]
temperature_max:
cle: [ 'tmax' ]
temperature_min:
cle: [ 'tmin' ]
vitesse_vent:
cle: [ 'wind10m' ]
angle_vent:
cle: [ 'dirwind10m' ]
direction_vent:
cle: [ ]
risque_precipitation:
cle: [ 'probarain' ]
precipitation:
cle: [ 'rr10' ]
humidite:
cle: [ ]
point_rosee:
cle: [ ]
pression:
cle: [ ]
visibilite:
cle: [ ]
nebulosite:
cle: [ ]
indice_uv:
cle: [ ]
code_meteo:
cle: [ 'weather' ]
icon_meteo:
cle: [ ]
desc_meteo:
cle: [ ]
trad_meteo:
cle: [ ]
jour_meteo:
cle: [ ]
# Bloc erreurs : mash-up des erreurs remontées par le service
# -----------------------------------------------------------
erreurs:
cle_base: [ ]
donnees:
code:
cle: [ ]
message:
cle: [ 'message' ]
Loading…
Cancel
Save