Merci pour ton aide
ca fonctionne
RESTEASY003210: Could not find resource for full path: https://particulier.edf.fr/services/res ... 2024-09-21
# curl -X 'GET' \
> 'https://www.api-couleur-tempo.fr/api/jourTempo/today' \
> -H 'accept: application/json'
{"dateJour":"2024-09-21","codeJour":1,"periode":"2024-2025"}
danardf a écrit:Le module ne sample plus fonctionner.
Erreur: Impossible de parser XML.
https://particulier.edf.fr/services/res ... 2024-09-21
retourne:RESTEASY003210: Could not find resource for full path: https://particulier.edf.fr/services/res ... 2024-09-21
- Code : Tout sélectionner
# curl -X 'GET' \
> 'https://www.api-couleur-tempo.fr/api/jourTempo/today' \
> -H 'accept: application/json'
{"dateJour":"2024-09-21","codeJour":1,"periode":"2024-2025"}
Je me demande si EDF n'aurait pas changer quelque chose.
https://www.api-couleur-tempo.fr/api
danardf a écrit:Oui, mais pas dans le code PHP du module!
Ce qui retourne une erreur.
Je l'ai démontré dans le test Curl que l'API fonctionnait avec l'URL donnée par EDF sur leur site.
"{"dateJour":"2024-09-21","codeJour":1,"periode":"2024-2025"}"
$url = "https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant=".$date_en."&_=".$millisec;
Fichier installé : edf_tempo.php (2024-01-14 16:03)
Vous avez déjà la dernière version disponible.
opa95 a écrit:Bonjour danarfdanardf a écrit:Oui, mais pas dans le code PHP du module!
Ce qui retourne une erreur.
Je l'ai démontré dans le test Curl que l'API fonctionnait avec l'URL donnée par EDF sur leur site.
dans mon script, ça marche bien
$url_edf = 'https://www.api-couleur-tempo.fr/api/jourTempo/today';
Réponse
- Code : Tout sélectionner
"{"dateJour":"2024-09-21","codeJour":1,"periode":"2024-2025"}"
danardf a écrit:Je ne comprend pas pourquoi ça fonctionne avec votre script et qu'avec le mien ça ne fonctionne pas du fait que les URL soient différentes!
ça devrait vous indiquer quelque chose du genre. Oh, un problème dans la MàJ? Pb de version?
Y a t-il une solution?
opa95 a écrit:Bonsoir danarfdanardf a écrit:Je ne comprend pas pourquoi ça fonctionne avec votre script et qu'avec le mien ça ne fonctionne pas du fait que les URL soient différentes!
ça devrait vous indiquer quelque chose du genre. Oh, un problème dans la MàJ? Pb de version?
Y a t-il une solution?
Je ne connais pas les problèmes liés à la box : je ne travaille que sur l'eedomus plus.
Je peux essayer de t'envoyer un script "simpliste" pour que tu puisses voir où ça plante, mais ce ne sera pas ce soir.
toshopp a écrit:Hello, j'ai une eedomus + mais je suis toujours sur la version 3.6 de fin 2022. La nouvelle version du script a été publié sur le store ou pas encore ?
Merci beaucoup opa95!
paope a écrit:;Bonjour OPA,
merci pour ton retour rapide. Désolé pour ma réponse tardive mais je n'etais pas à la maison.
j'ai essayé de charger le script ce matin, mais apparement j'ai un souci aussi.
ci dessous le retour il n'arrive pas à trouver les valeurs.
merci d'avance pour ton aide.
<root>
<tempo>
.....
<tempo>
<debug>
<version>3.7</version>
......
</debug>
</root>
<?php
/*****************************************************************************
**
** Script Tempo/EJP pour eedomus
**
** Script qui permet de récupérer au format XML les données Tempo ou EJP :
** - Couleur Tempo du jour/EJP (//aujourdhui),
** - Couleur Tempo du lendemain/EJP (//demain),
** - Nombre de jours Bleus Tempo restants (//decompte_bleu),
** - Nombre de jours Blancs Tempo restants (//decompte_blanc),
** - Nombre de jours Rouge Tempo restants (//decompte_rouge),
** - Nombre de jours Rouge EJP restants (//decompte),
** - Tarif du jour
** Les données sont stockées en mémoire et le polling sur les sites est réglé
** par la valeur de 'timer' (3600 secondes par défaut).
** Un polling automatique est fait au passage à minuit, 6h, 12h et 22h,
** pour que ce polling automatique se fasse bien, on peut régler la fréquence des plugins à une valeur faible (1 ou 2 minutes) : dans ce cas, les pollings
réels seront synchronisés à peu près sur les passages à l'heure (0:01h,1:01h... pour timer=3600) ou par exemple à (0:01h, 6h:01, 12h:01,18:01h,22:01h pour timer=21600 [6*3600] ); si timer>=36000, les lectures seront (0:01h, 6h:01, 12h:01,22:01h)
** Le nombre d'appels sera donc compris entre 4 et 25 par jour, quel que soit le nombre de devices créés. Le reste du temps les appels se conteteront de renvoyer le contenu de la mémoire.
** en mode test, on peut forcer la lecture avec la commande &reset=1 ou &simul=x, avec x<0 ou >timer
****************************************************************************
** - URL de la Requête
**: http://localhost/script/?exec=edf_tempo.php
** - ou http://localhost/script/?exec=edf_tempo.php&contrat=[VAR1]&site=[VAR2]&timer=[VAR3]
** avec
** VAR1 : vide (-> tempo) ou tempo ou ejp (ou contenu dans le nom du script)
** VAR2 : vide ou numéro du site secondaire, 0 par défaut -> test de tous les sites
** VAR3 : vide ou période de polling (secondes) 3600 par défaut
** - Fréquence de la Requête : 60 minutes ou 1 si on veut mettre à jour l'affichage plus souvent pour le passage à 0h, 6h, 12h, 22h, de toute façon le polling vers les sites est réglé par 'timer' (3600 par défaut)
** L'URL est de la forme (Tempo) : edf_tempo.php ou edf_ejp.php&contrat=tempo ou utiliser VAR1
** L'URL est de la forme (EJP) : edf_ejp.php ou edf_tempo.php&contrat=ejp ou utiliser VAR1
** si l'URL porte un autre nom, le champ &contrat est obligatoire (ou VAR1)
** commandes ajouter à la fin de la ligne de commande:
** type contrat : &contrat=1 (tempo par défaut ou récupéré dans le nom)
** mode debug : &debug=1 (0 par défaut)
** site : &site=n (0 par défaut -> tous les sites, sinon n° du site)
** timer (Validité du fichier en secondes) :&timer=xxxxx (3600 par défaut)
** reset : effacement mémoire : &reset=n (0 par défaut, 1 sinon)
** simul décalage temporel (secondes) : &simul=yyyyy (0 par défaut)
****************************************************************************
Resultats : /tempo/champ ou //champ
?xml version="1.0" encoding="UTF-8"?>
<root>
<tempo>
<aujourdhui>BLEU</aujourdhui> // de 6h à 6h (demain)
<date_aujourdhui>JOUR</date_aujourdhui> // de 6h à 6h (demain)
<demain>BLEU</demain> // de 6h (demain) à 6h (aprèsdemain)
<date_demain>11/09</date_demain> // de 6h (demain) à 6h (aprèsdemain)
<now>BLEU</now> // couleur actuelle (dépend de l'heure, avant 6h -> hier)
<date_now>JOUR</date_now> // date actuelle (dépend de l'heure, avant 6h -> hier)
<decompte_bleu>10</decompte_bleu> //nombre de jours écoulés
<decompte_blanc>0</decompte_blanc> //nombre de jours écoulés
<decompte_rouge>0</decompte_rouge> //nombre de jours écoulés
<reste_bleu>290</reste_bleu> //nombre de jours restants
<reste_blanc>43</reste_blanc> //nombre de jours restants
<reste_rouge>22</reste_rouge> //nombre de jours restants
<type>tempo</type>
<hphc>HP</hphc> // période actuelle (dépend de l'heure, avant 6h -> hier)
<tarifs_aujourdhui>0.1609/0.1296</tarifs_aujourdhui> // de 6h à 6h (demain)
<tarifs_demain>0.1609/0.1296</tarifs_demain> // de 6h (demain) à 6h (aprèsdemain)
<tarif_now>0.1609</tarif_now>// tarif actuel (dépend de l'heure, avant 6h -> hier)
<bleu_hc>0.1296</bleu_hc> // tarif
<bleu_hp>0.1609</bleu_hp> // tarif
<blanc_hc>0.1486</blanc_hc> // tarif
<blanc_hp>0.1894</blanc_hp> // tarif
<rouge_hc>0.1568</rouge_hc> // tarif
<rouge_hp>0.7562</rouge_hp> // tarif
</tempo>
<debug>
<date_fichier>2024-09-10 11:34:28</date_fichier>
<timestamp>1725960868</timestamp> //fichier
<date_lecture>Mardi 10/09 11:34:28</date_lecture>
<url>https://www.api-couleur-tempo.fr/api/joursTempo?dateJour[]=2024-09-09&dateJour[]=2024-09-10&dateJour[]=2024-09-11</url> //api edf
<url_>https://selectra.info/energie/fournisseurs/edf/tempo</url_> // url secondaire
<result>1</result> //1->OK
</debug>
</root>
********************************************************************************
urls compatibles :
tempo
https://www.api-couleur-tempo.fr/api/joursTempo?',
https://selectra.info/energie/fournisseurs/edf/tempo#selectran',
https://www.fournisseurs-electricite.com/edf/tarifs/tempo#selectran',
https://prix-elec.com/tarifs/fournisseurs/edf/tempo#selectran'
ejp (pas testé le 2024/09/10)
https://electricite.net/edf/tarifs/ejp // **dates fausses le 2/04
https://prix-elec.com/tarifs/fournisseurs/edf/ejp-demain
https://selectra.info/energie/fournisseurs/edf/ejp
https://selectra.info/energie/fournisseurs/edf/ejp/demain
https://observatoires.net/calendrier
https://selectra.info/energie/fournisseurs/edf/ejp/jours
https://www.fournisseurs-electricite.com/edf/tarifs/ejp/jour-demain
https://www.fournisseurs-electricite.com/edf/tarifs/ejp
https://www.kelwatt.fr/fournisseurs/edf/ejp/demain
https://www.kelwatt.fr/guide/ejp
******************************************************************************
**
** Evolution des versions :
**
** 2017-07-26 (DjMomo) :V1.0 - Version initiale
** 2019-10-24 (Merguez07) :V2.0 - utilisation du proxy Eedomus
** 2019-10-26 (Merguez07) :V2.1 - Passage du cache de 24h à 1h
** 2020-11-11 (Merguez07) :V3.0 - utilisation des données du site de selectra
** 2021-10-04 (Merguez07) :V3.1 - correction du script suite à evolution du site Electra
** 2022-01-07 (Merguez07) :V3.2 - correction du script suite à evolution du site Electra
** 2022-03-24 (Merguez07) :V3.3 - correction du script suite à evolution du site Electra
** 2022-03-27 (Merguez07) :V3.4 - bug dans le store
** 2022-04-01 (opa95) :V3.5 - corrections mineures, compatible autres sites et EJP
** 2022-04-01 (opa95) :V3.6 - utilisation du site edf tempo et EJP
** 2024-09-10 (opa95) :V3.7 - Utilisation api edf et sites selectra...
*******************************************************************************/
function sdk_jour($time_now,$nbJours = 0,$jourStr = 2) {
//creation date à partir du temps unix décale de $nbJours
//sortie jourFrançais jj/mm
global $days;
$time_now += 86400*$nbJours;
$jour_semaine = date('w',$time_now);
$start = 0;
foreach ($days as $key => $day) {
if ($start == $jour_semaine) {
$jour_semaine = $key;
break;
}
$start ++;
}
switch ($jourStr) {
case 2 : $ret= date('Y-m-d',$time_now);
return $ret;
case 1 : return $jour_semaine.' '.date('d/m',$time_now);
default :
$ret= date('d/m',$time_now);
return $ret;
}
// if ($jourStr ==1 ) return $jour_semaine.' '.date('d/m',$time_now);
// else return date('d/m',$time_now);
// return;
}
function sdk_multiextract($string,$startStr,$stopStr='',&$start,$startIn = false,$stopIn = false) { // Extraire une chaine de caracteres suivant plusieurs separateurs
// startStr : string ou array recherche de startStr ou de startStr[0], puis de startStr[1]à partir de là, puis ...
// stopStr : string ou array recherche de stopStr ou de stopStr[0], puis de stopStr[1]à partir de là, puis ...
// renvoi de la portion de $string entre le dernier startStr et le dernier stopStr
// Si outer les balises sont incluses, sinon elles ne sont pas incluses
// start est remis a jour
// eviter les caractères non standards
// si startStr (ou stopStr) de la forme
// array(array('a','b'),array('d','e')) recherche de (a puis b) ou bien (d puis e), si séquence 1 absente
// array('ab', 'ef') recherche de 'ab' puis 'ef'
// 'abc' recherche de 'abc'
$found = true;
if (!is_array($startStr)) {
$startStr = array($startStr);
}
foreach ($startStr as $codes){
if (!is_array($codes)) {
$codes = $startStr;//$codes = array($codes);
}
$beg = $start;
$startPos = '';
foreach ($codes as $code) {
$startLen = strlen($code);
if ( ($startLen != 0) && (($pos = strpos(substr($string,$beg),$code)) !== false) ) {
if ($startPos == '') $startPos = $beg + $pos;
$beg = $beg + $pos + $startLen;
}
else {
$beg = $start;
if ($startPos == '') $startPos = $beg;
$found = false;
break;
}
}
if ($found) break;
}
$start = $beg;
$found = true;
if (!is_array($stopStr)) {
$stopStr = array($stopStr);
}
foreach ($stopStr as $codes){
if (!is_array($codes)) {
$codes = $stopStr;//$codes = array($codes);
}
$end = $start;
$stopPos = '';
foreach ($codes as $code) {
$stopLen = strlen($code);
if ( ($stopLen != 0) && (($pos = strpos(substr($string,$end+1),$code)) !== false) ) {
$end = $end + 1 + $pos;
if ($stopPos == '') $stopPos = $end;
}
else {
$end = $start;
if ($stopPos == '') $stopPos = $end;
$found = false;
break;
}
}
if ($found) break;
}
if ($startIn) $beg = $startPos;
if ($stopIn) $end += $stopLen;
else $end = $stopPos;
$launch = substr($string,$beg,$end-$beg);
return $launch;
}
function sdk_extract($string,$startStr,$stopStr='',$start = 0,$startIn = false,$stopIn = false) { // Ectraire une chaine de caracteres suivant plusieurs separateurs
// appel de sdk_multiextract, start inchangé
$launch = sdk_multiextract($string,$startStr,$stopStr,$start,$startIn,$stopIn );
return $launch;
}
function sdk_multiexplode ($delimiters,$string) { // Separer une chaine de caracteres suivant plusieurs separateurs
// remplacement delimiters[1] par delimiters[0]
// renvoi du tableau rédultat de explode
$ready = str_replace($delimiters, $delimiters[0], $string);
$launch = explode($delimiters[0], $ready);
return $launch;
}
function sdk_format ($string,$field = 'color') { // met en forme selon la semantique du plugin du store
// formatage de date -> format[dayWeek] dayWeek et format[dateJM] jj/mm ou renvoi ND ND
// formatage de couleur tempo -> BLEU, BLANC, ROUGE ND
// formatage de couleur ejp -> NON_EJP, EST_EJP, ND
global $contrat;// tempo ou ejp
global $upc_contrat;// TEMPO ou EJP
global $days;// jour de la semaine
$string = str_replace($upc_contrat,'',trim(strtoupper($string)));
if ($field == 'date') {
if (strlen($string) < 6) $string = 'ND '.$string;
list($format['dayWeek'],$format['dateJM']) = explode(' ',trim($string));
if ($format['dayWeek'] != 'ND') $format['dayWeek'] = $format['dayWeek'][0].strtolower(substr($format['dayWeek'],1));
if (!array_key_exists($format['dayWeek'],$days) ) $format['dayWeek'] = 'ND';
}
else {
$format = "ND";
$string = strtoupper(str_replace(' ','',$string));
if ($contrat == 'ejp') {
if ( ($string == "PASD'") || (strpos($string,'JAMAIS') !== false) ) $format="NON_EJP";
if ($string == "JOUR") $format="EST_EJP";
}
else {
$string = strtoupper($string);
$color = array("1"=>"BLEU","2"=>"BLANC","3"=>"ROUGE","0"=>"ND");
if (is_numeric($string)) {
$string = $string%4;
if ($string>0) return $color[$string];
}
foreach ($color as $col) {
if (strpos($string,$col) !== false) {
$format = $col;
break;
}
}
}
}
return $format;
}
define('MEM','OLD');
define('DEFTYPE','selectran');// format url annexe
define('DEFTIME','3600');//3600 secondes
define('NBB','300');
define('NBW','43');
define('NBR','22');
define('TSTART',6);//début start
define('TSTOP',22);//fin HP
define('VER','3.7');
$months = array('janvier' => 'January', 'février' => 'February','mars' => 'March','avril' => 'April','mai' => 'May',
'juin' => 'June','juillet' => 'July','août' => 'August','septembre' => 'September','octobre' => 'October',
'novembre' => 'November','décembre' => 'December');
$days = array('Dimanche' => 'Sunday','Lundi' => 'Monday','Mardi' => 'Tuesday','Mercredi' => 'Wednesday','Jeudi' => 'Tuesday',
'Vendredi' => 'Friday','Samedi' => 'Saturday');
//initialisation des variables
//$start = strlen('exec=edf_');
$source = (array_key_exists('exec',$_GET))? strtolower($_GET['exec']):"";
if (strpos('Z'.$source,'tempo')) $contrat = 'tempo';
elseif (strpos('Z'.$source,'ejp'))$contrat = 'ejp';
else $contrat = "";
$contrats = array('tempo','ejp');
$urls = array('tempo' => array (
'https://www.api-couleur-tempo.fr/api/joursTempo?',
'https://selectra.info/energie/fournisseurs/edf/tempo#selectran',
'https://www.fournisseurs-electricite.com/edf/tarifs/tempo#selectran',
'https://prix-elec.com/tarifs/fournisseurs/edf/tempo#selectran',
'https://www.kelwatt.fr/guide/tempo#selectra',
'https://observatoires.net#selectra',
'https://observatoires.net/tempo#selectra',
),
'ejp' => array (
1 => 'https://selectra.info/energie/fournisseurs/edf/ejp#selectra',
'https://observatoires.net#selectra',
'https://observatoires.net/ejp#selectra',
'https://prix-elec.com/tarifs/fournisseurs/edf/ejp-demain#selectra',
'https://www.fournisseurs-electricite.com/edf/tarifs/ejp/jour-demain#selectra',
'https://www.kelwatt.fr/fournisseurs/edf/ejp#selectra',
'https://electricite.net/edf/tarifs/ejp#selectra',
'https://agence-energie.com/edf/tarifs/ejp#selectra'
)
);
$types = array('selectra','selectran','keskeces');
$contrat_ = strtolower(getArg('contrat',false,""));
$contrat = (($contrat_!="") && (in_array($contrat_,$contrats)))? $contrat_:$contrat;
$debug = getArg('debug',false);
if ( (!$debug) || (!in_array($debug,array(0,1))) ) $debug = 0;
$num_site = abs(getArg('site',false));
if ( (!$num_site) || (($num_site > count($urls[$contrat]) )) ) $num_site = 1;
if ($num_site == 0 ) $scan = 1; else $scan = 0;
$timer = getArg('timer',false,DEFTIME);//Validité du fichier
$upc_contrat = strtoupper($contrat);
$poll = 0;
$reset = getArg('reset',false,0);
if ($reset) {
deleteVariable(MEM.$contrat);
$poll = 1;
}
$simul = getArg('simul',false,0);//Décalage temps secondes
$time_now = time()+$simul;
$annee_now = date('Y',$time_now);//aaaa
$heure_now = date('H',$time_now);//hh
$date_now = sdk_jour($time_now,0,1);// jj/mm
$date_demain = sdk_jour($time_now,1,1);//jour jj/mm
$date_hier = sdk_jour($time_now,-1,0);//jour jj/mm
$nowDate = sdk_jour($time_now,0,0);//jour semaine
$dateDemain = sdk_jour($time_now,1,0);//jour semaine
list($nowDayWeek,$bof) = explode(' ',$date_now);
list($tomorrowDayWeek,$bof) = explode(' ',$date_demain);
$infos_ = array (
'todayDate' => 'ND', 'todayDayWeek' => 'ND',
'todayYear' => 'ND', 'todayColor' => 'ND', 'hphc' =>'HP',
'tomorrowDate' => 'ND', 'tomorrowDayWeek' => 'ND', 'tomorrowYear' => 'ND', 'tomorrowColor' => 'ND',
'yesterdayColor' =>'ND', 'yesterdayRate' => 'ND', 'yesterdayDate' => 'ND',
'nowDate' => 'ND','nowColor'=>'ND', 'tarifnow' => 'ND',
'decRed' => NBR, 'totRed' => NBR, 'remRed' => 'ND',
'decWhite' => NBW, 'totWhite' => NBW, 'remWhite' => 'ND',
'decBlue' => NBB, 'totBlue' => NBB, 'remBlue' => 'ND',
'fileDate' => 'ND', 'fileTimestamp' => 'ND',
'BLEU' => array('HC'=>'0.1296','HP'=>'0.1609'),
'BLANC' => array('HC'=>'0.1486','HP'=>'0.1894'),
'ROUGE' => array('HC'=>'0.1568','HP'=>'0.7562'),
) ;
if (loadVariable(MEM.$contrat)) $infos_ = loadVariable(MEM.$contrat);
else $poll = 1;
$infos_['hphc'] = (($heure_now<TSTART) || ($heure_now>=TSTOP))?'HC':'HP';
if (!$poll && array_key_exists('fileTimestamp',$infos_)){// forçage lecture
$file_hour = date("H",$infos_['fileTimestamp']);
if ($time_now<$infos_['fileTimestamp']) {$poll=1;}// simulation (recul)
elseif (($time_now-$infos_['fileTimestamp'])>$timer) {$poll=1;}// temps expiré
elseif (($file_hour<TSTART) && ($heure_now>=TSTART)) {$poll=1;}// passage à 6h
elseif (($file_hour<TSTOP) && ($heure_now>=TSTOP)) {$poll=1;} // passage à 22h
elseif (($file_hour>$heure_now)) {$poll=1;}// passage à minuit
elseif (($file_hour<12) && ($heure_now>=12)) {$poll=1;} // passage à 12h
}
$heure_lecture = date('H:i:s',$time_now);
if ($poll)
{ $urls['tempo'][0] .= 'dateJour[]='.sdk_jour($time_now,-1).'&dateJour[]='.sdk_jour($time_now).'&dateJour[]='.sdk_jour($time_now,1);
$infos_['todayDate'] = $nowDate; // dd/mm
$infos_['todayDayWeek'] = $nowDayWeek; // Jour ou ND
$infos_['tomorrowDate'] = $dateDemain; // dd/mm
$infos_['tomorrowDayWeek'] = $tomorrowDayWeek; // Jour ou ND
$infos_['yesterdayDate'] = $date_hier;
if ('todayDayWeek' == 'Samedi') $infos_['tomorrowColor'] = 'BLEU';
elseif ('todayDayWeek' == 'Dimanche') $infos_['todayColor'] = 'BLEU';
$response0 = httpQuery($urls['tempo'][0],'GET');
$response0 = sdk_json_decode($response0);
$api_edf = count($response0)>1;
$infos_['yesterdayColor'] = sdk_format($response0[0]['codeJour']);
$bof = sdk_format($response0[1]['codeJour']);
$infos_['todayColor'] = $bof;
$bof = sdk_format($response0[2]['codeJour']);
if ($bof!='ND') $infos_['tomorrowColor'] = $bof;
for ($i=$num_site;$i<=count($urls[$contrat]);$i++){
if (!$i) $i++;
list($url,$type) = explode('#',$urls[$contrat][$num_site]);
if ( (!$type) || (!in_array($type,$types)) ) $type = DEFTYPE;
$response = trim(httpQuery($url,'GET'));
if (strpos($response,'html') === false) $result = 0;
else {$result = 1;break;}
if ($num_site) break;
}
if ($result) {
$erreur = 0;
switch ($type) {
case 'selectra' :
//lecture block
$sep2 = array(array('<!-- END'),array('<div id="block-'));
$sep = array('<div id="block-'.$contrat,'<div');
$start = 0;
$block = trim(strtolower(sdk_extract($response,$sep,$sep2,$start,false,false)));//pas de MaJ $start
$err_num = 1;
if (strlen($block) == 0) {$erreur = $err_num;break;}
//extraction infos Aujourd'hui
$sep2 ='</';
// date
$sep = array('aujourd',$contrat);// jour dd/mm
$bof = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
$bof = sdk_format($bof,'date');
$infos_['todayDate'] = $bof['dateJM']; // dd/mm
$infos_['todayDayWeek'] = $bof['dayWeek']; // Jour ou ND
//couleur
$sep = array('_icon','<span>');// couleur
$infos_['todayColor'] = trim(sdk_multiextract($block,$sep,$sep2,$start));
$infos_['todayColor'] = sdk_format($infos_['todayColor']);//COUL ou ND
//extraction infos demain
$start = 0;// debut block
// date
$sep = array('demain',$contrat);// jour dd:mm
$bof = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
$bof = sdk_format($bof,'date');
$infos_['tomorrowDate'] = $bof['dateJM']; // dd/mm
$infos_['tomorrowDayWeek'] = $bof['dayWeek']; // Jour ou ND
// couleur
$sep = array('_icon','<span>');// couleur
$infos_['tomorrowColor'] = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
$infos_['tomorrowColor'] = sdk_format($infos_['tomorrowColor']);
// bilan
$sep = array('title','>'); //{ejp}nbjoursecoules/nbtotjours {tempo} nbjoursrestants
$bof = trim(sdk_multiextract($block,$sep,$sep2,$start));
if ($contrat == 'ejp') {
list($bof,$bof1) = explode('/',$bof);
$bof1 = trim($bof1);
if (is_numeric($bof1)) $infos_['totRed'] = $bof1;
$bof = trim($bof);
if (is_numeric($bof)) {
$infos_['decRed'] = $infos_['totRed'] - $bof;}
}
//complements
$bof = str_replace('/','-',$infos_['todayDate'].'-'.$annee_now);//date europeenne
$bof = strtotime($bof);
if ($bof > $time_now) $infos_['todayYear'] = $annee_now -1;
else $infos_['todayYear'] = $annee_now;
$infos_['tomorrowYear'] = $infos_['todayYear'];
if ($infos_['tomorrowDate'] == '01/01') $infos_['tomorrowYear']++;
break;
case 'selectran' :
$sep2 = array(array('<!-- END'),array('<div class='));
$sep = array('"intro">','hui, ');
$start = 0;
$block = trim(strtolower(sdk_extract($response,$sep,$sep2,$start,false,false)));//pas de MaJ $start
$err_num = 1;
if (strlen($block) == 0) {$erreur = $err_num;break;}
if ($api_edf){
$sep = array('il reste');// jour dd/mm
$sep2 =array('</p>');
$block = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
$start=0;
$sep2 =array('</');
}else{
//lecture block
//extraction infos Aujourd'hui
// date
$sep = array('hui, ');// jour dd/mm
$sep2 = array(',');// jour dd/mm
$bof = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
$jour = explode(" ",$bof);
$jour[1] = $months[$jour[1]];
$date = strtotime($jour[0]." ".$jour[1]." ".$jour[2]);
//couleur
$sep = array('est');// couleur
$sep2 ='</';
$bof = trim(sdk_multiextract($block,$sep,$sep2,$start));
$infos_['todayColor'] = sdk_format($bof);//COUL ou ND
//extraction infos demain
// date
// couleur
$sep = array('sera');// couleur
$bof = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
$infos_['tomorrowColor'] = sdk_format($bof);
}
// bilan
$sep = array('<strong>'); //{ejp}nbjoursecoules/nbtotjours {tempo} nbjoursrestants
for ($i =0;$i<3;$i++) {
$bof = trim(sdk_multiextract($block,$sep,$sep2,$start));
$nb = (int)$bof;
if (strpos($bof,'bleu')>1) $infos_['remBlue'] = $nb;
elseif (strpos($bof,'rouge')>1) $infos_['remRed'] = $nb;
elseif (strpos($bof,'blanc')>1) $infos_['remWhite'] = $nb;
}
$infos_['decRed'] = $infos_['totRed'] - $infos_['remRed'];
$infos_['decWhite'] = $infos_['totWhite'] - $infos_['remWhite'];
$infos_['decBlue'] = $infos_['totBlue'] - $infos_['remBlue'];
$sep2 = array(array('<!-- END'),array('</tr'));
$sep = array('<th>Abonnement','<strong>','<strong>','</td>');
$start = 0;
$block = trim(strtolower(sdk_extract($response,$sep,$sep2,$start,false,false)));//pas de MaJ $start
$sep2 = array(' ');
$sep = array('<td>');
$bof = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
if ($bof>0) $infos_['BLEU']['HC'] = $bof;
$bof = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
if ($bof>0) $infos_['BLEU']['HP'] = $bof;
$bof = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
if ($bof>0) $infos_['BLANC']['HC'] = $bof;
$bof = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
if ($bof>0) $infos_['BLANC']['HP'] = $bof;
$bof = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
if ($bof>0) $infos_['ROUGE']['HC'] = $bof;
$bof = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
if ($bof>0) $infos_['ROUGE']['HP'] = $bof;
break;
case 'keskeces' :
//lecture block1
$sep = array("<div class='cont' onclick=","Aujourd'hui");
$sep2 = "<div class='cont' onclick=";
$startBlock = 0;
$block = trim(str_replace(',','',sdk_multiextract($response,$sep,$sep2,$startBlock)));
if (strlen($block == 0) ) {$erreur = 1;break;}
//extraction dates et couleur
$sep2 = '</';
$sep = '';
$start = 0;
$infos_['todayDate'] = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
$sep = array('Jour','<div','>');//Bleu Blanc Rouge Indeterminé
$infos_['todayColor'] = sdk_multiextract($block,$sep,$sep2,$start);//MaJ $start
$infos_['todayColor'] = sdk_format($infos_['todayColor']);
$sep = array('Lendemain','<div','>');//Bleu Blanc Rouge Indeterminé
$infos_['tomorrowColor'] = sdk_multiextract($block,$sep,$sep2,$start);//MaJ $start
$infos_['tomorrowColor'] = sdk_format($infos_['tomorrowColor']);
$date_array = explode(' ',$infos_['todayDate']);//Jour J mois aaaa (français)
$bof = strtotime($date_array[1].' '.$months[$date_array[2]].' '.$date_array[3]);
$infos_['todayDayWeek'] = $date_array[0];
$infos_['todayDate'] = sdk_jour($bof,0,false);//jour JJ/MM
$infos_['todayYear'] = $date_array[3];
$infos_['tomorrowDate'] = sdk_jour($bof,1,false);
$infos_['tomorrowYear'] = $infos_['todayYear'];
if ($infos_['tomorrowDate'] == '01/01') $infos_['tomorrowYear']++;
//lecture block2
$sep = array("<div class='cont' onclick=",'Tempo','Jours');
$sep2 = "<div class='cont pub'";
$block = trim(str_replace(',','',sdk_multiextract($response,$sep,$sep2,$startBlock)));
//bilan
$sep2 = '</';
$start = 0;
$sep = array('bj','<b>');//Bleu Blanc Rouge Indeterminé
$infos_['decBlue'] = sdk_multiextract($block,$sep,$sep2,$start);//nn
$infos_['totBlue'] = sdk_multiextract($block,$sep,$sep2,$start) + $infos_['decBlue'];//nn
$start = 0;
$sep = array('wj','<b>');//Bleu Blanc Rouge Indeterminé
$infos_['decWhite'] = sdk_multiextract($block,$sep,$sep2,$start);//nn
$infos_['totWhite'] = sdk_multiextract($block,$sep,$sep2,$start) + $infos_['decWhite'];//nn
$start = 0;
$sep = array('rj','<b>');//Bleu Blanc Rouge Indeterminé
$infos_['decRed'] = sdk_multiextract($block,$sep,$sep2,$start);//nn
$infos_['totRed'] = sdk_multiextract($block,$sep,$sep2,$start) + $infos_['decRed'];//nn
$sep = array('/table',':');//J mois aaaa à hhhmm(français)
$infos_['fileDate'] = trim(sdk_multiextract($block,$sep,'<',$start));//MaJ $start
$date_array = explode(' ',$infos_['fileDate']);//array JJ mois aaaa à hhhmm
$bof = strtotime($date_array[0].' '.$months[$date_array[1]].' '.$date_array[2]);
$infos_['heureFile'] = str_replace('h',':',$date_array[4]);//hh:mm
$infos_['fileDate'] = sdk_jour($bof,0);
break;
}
}
if ($heure_now<TSTART) {
if ($infos_['nowDate'] != $infos_['yesterdayDate']){
$infos_['nowDate'] = $infos_['yesterdayDate'];
$infos_['nowColor'] = $infos_['yesterdayColor'];
// $infos_['tarifNow'] = $infos_['yesterdayRate'];
}
}elseif ($infos_['nowDate'] != $infos_['todayDate']){
$infos_['nowDate'] = $infos_['todayDate'];
$infos_['nowColor'] = $infos_['todayColor'];
// $infos_['tarifNow'] = $infos_['tarifToday'];
}
if ( ($infos_['todayColor'] == 'ND') || ($infos_['tomorrowColor'] == 'ND') ) {
$result = 0;
}
$infos_['fileTimestamp'] = $time_now;;
$infos_['fileDate'] = date('Y-m-d H:i:s',$infos_['fileTimestamp']);
//var_dump($infos_);
saveVariable(MEM.$contrat,$infos_);
}
// Génération du XML
sdk_header('text/xml');
$xml = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$xml .= "<root>\n";
$xml .= '<'.$contrat.'>'."\n";
$xml .= ' <aujourdhui>'.$infos_['todayColor']."</aujourdhui>\n";
$xml .= ' <date_aujourdhui>'.$infos_['todayDate']."</date_aujourdhui>\n";
$xml .= ' <demain>'.$infos_['tomorrowColor']."</demain>\n";
$xml .= ' <date_demain>'.$infos_['tomorrowDate']."</date_demain>\n";
$xml .= ' <now>'.$infos_['nowColor']."</now>\n";
$xml .= ' <date_now>'.$infos_['nowDate']."</date_now>\n";
if ($contrat == 'ejp') {
$xml .= ' <decompte>'.$infos_['decRed']."</decompte>\n";
}
else {
$xml .= " <decompte_bleu>".$infos_['decBlue']."</decompte_bleu>\n";
$xml .= " <decompte_blanc>" .$infos_['decWhite']."</decompte_blanc>\n";
$xml .= ' <decompte_rouge>' .$infos_['decRed']."</decompte_rouge>\n";
$xml .= " <reste_bleu>" .$infos_['remBlue']."</reste_bleu>\n";
$xml .= " <reste_blanc>" .$infos_['remWhite']."</reste_blanc>\n";
$xml .= ' <reste_rouge>' .$infos_['remRed']."</reste_rouge>\n";
$xml .= ' <type>'.$contrat."</type>\n";
$xml .= ' <hphc>'.$infos_['hphc']."</hphc>\n";
$xml .= ' <tarifs_aujourdhui>'.$infos_[$infos_['todayColor']]['HP'].'/'.$infos_[$infos_['todayColor']]['HC']."</tarifs_aujourdhui>\n";
$xml .= ' <tarifs_demain>'.$infos_[$infos_['tomorrowColor']]['HP'].'/'.$infos_[$infos_['todayColor']]['HC']."</tarifs_demain>\n";
$xml .= ' <tarif_now>'.$infos_[$infos_['nowColor']][$infos_['hphc']]."</tarif_now>\n";
$xml .= ' <bleu_hc>'.$infos_['BLEU']['HC']."</bleu_hc>\n";
$xml .= ' <bleu_hp>'.$infos_['BLEU']['HP']."</bleu_hp>\n";
$xml .= ' <blanc_hc>'.$infos_['BLANC']['HC']."</blanc_hc>\n";
$xml .= ' <blanc_hp>'.$infos_['BLANC']['HP']."</blanc_hp>\n";
$xml .= ' <rouge_hc>'.$infos_['ROUGE']['HC']."</rouge_hc>\n";
$xml .= ' <rouge_hp>'.$infos_['ROUGE']['HP']."</rouge_hp>\n";
}
$xml .='</'.$contrat.'>'."\n";
$xml .= "<debug>\n";
$xml .= ' <version>'.VER."</version>\n";
$xml .= ' <date_fichier>'.$infos_['fileDate']."</date_fichier>\n";
$xml .= ' <timestamp>'.$infos_['fileTimestamp']."</timestamp>\n";
$xml .= ' <date_lecture>'.$date_now." ".$heure_lecture."</date_lecture>\n";
$xml .= ' <url>'.htmlentities($urls['tempo'][0])."</url>\n";
$xml .= ' <url_>'.htmlentities($url)."</url_>\n";
$xml .= ' <result>'.$result."</result>\n";
if ($debug) {
$xml .= ' <source>' .$source ."</source>\n";
$xml .= " <response> " .substr($response,0,100) .".....\n </response>\n";
foreach ($infos_ as $key => $info){
$xml .= ' <test_'.$key.'>' .$info ."</test_".$key.">\n";
}
$xml .= " <debugLen>" .strlen($block) ."</debugLen>\n";
$xml .= " <debugStr>\n" .$block ."\n </debugStr>\n";
foreach ($urls[$contrat] as $key => $url) {
$xml .= ' <url_'.$key.'>'.$url ."</url_".$key.">\n";
}
}
$xml .= "</debug>\n";
$xml .= "</root>\n";
echo $xml;
?>
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 22 invité(s)