#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini Société :
', '', '')))); $tabRet['isin']=strtoupper(trim(strtr(@getTextInHtml($annonceHtml, '
ISIN :
', '
', '
'), array(':'=>'',' '=>'')))); $tabRet['docDesc']='';//trim(@getTextInHtml($annonceHtml, '
', 'class="r_desc">', '
')); $tabRet['docDate']=WDate::DateT('d/m/Y','Y-m-d', trim(@getTextInHtml($annonceHtml, '', 'class="date">', ''))).' '.trim(@getTextInHtml($annonceHtml, '', 'class="heure">', '')).':00'; $tabRet['docCategorie']=trim(utf8_decode(strip_tags(trim(str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, '
Type d\'information :
', '','')))).''))); /*
Communiqués de mise à disposition de documents / Modalités de mise à disposition de l'information financière trimestrielle
*/ $tabRet['docTitre']=utf8_decode(strip_tags(trim(str_replace(chr(160),' ',html_entity_decode(@getTextInHtml($annonceHtml, '
Titre du document :
', '
', '
')))))); //
Titre du document :
Cliffs Natural Resources inc. enregistre un formulaire 10-Q
$tabRet['docLangue']=trim(@getTextInHtml($annonceHtml, '
Langue :
', '
', '
')); $tabRet['pdfLink']=str_replace('https://', 'http://', str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, '&url=http://www.info-financiere.fr/', 'url=', '" target="')))); //print_r($tabRet); //die($annonceHtml); return $tabRet; } $tempsMinEntreRequetes=5; $tempsMaxEntreRequetes=30; set_time_limit(0); $lastJO=$dateDebut=$dateFin=$dateF=$dateCour=false; $iDb=new WDB(); $iInsee=new MInsee(); $iBourse=new MBourse(); $strInfoProg='Usage : '.basename($argv[0]). " [OPTION] Recupère les dernières annonces Infos financières sur le site de la DJO. Sans aucun paramètre, récupération des dernières Annonces. Sinon: -d:JJ/MM/AAAA Date de début de publication -f:JJ/MM/AAAA Date de fin de publication -l Dernières parutions uniquement (*) -n:X Intervalle MIN en secondes entre les requêtes sur le site des JO (défaut=$tempsMinEntreRequetes) -i:X \" MAX \" \" \" \" \" \" \" \" \" \" (défaut=$tempsMaxEntreRequetes) "; $argv=$_SERVER['argv']; if ($_SERVER['argc']==1) $lastJO=true; else { for ($i=1; isset($argv[$i]); $i++) { if (substr($argv[$i],0,1)=='-') { switch (substr($argv[$i],1,1)) { case 'd': $dateDebut=substr($argv[$i],3,10); $dateDeb=WDate::dateT('d/m/Y', 'Ymd', $dateDebut); $lastJO=false; break; case 'f': $dateFin=substr($argv[$i],3,10); $dateF=WDate::dateT('d/m/Y', 'Ymd', $dateFin); $lastJO=false; break; case 'n': $tempsMinEntreRequetes=trim(substr($argv[$i],3))*1; if ($tempsMinEntreRequetes<0) $tempsMinEntreRequetes=0; break; case 'i': $tempsMaxEntreRequetes=trim(substr($argv[$i],3))*1; if ($tempsMaxEntreRequetes<5) $tempsMaxEntreRequetes=2; break; case 'l': $lastJO=true; break; case '-': die($strInfoProg); break; default: die('Option '. $argv[$i] . " inconnue !\n"); } } } } echo date('Y/m/d - H:i:s') .' - DEBUT du script'. EOL; if ($lastJO) { // Voir pour callibrer correctement les dates $dateDeb=getNextDate(date('Ymd'), -4); $dateF =getNextDate(date('Ymd'), 0); } else { if ($dateFin==false) { $dateFin=date('d/m/Y'); $dateF=WDate::dateT('d/m/Y', 'Ymd', $dateFin); } if ($dateDebut==false) die($strInfoProg); } $dateCour=$dateDeb; $tabSansSiren=array(); $nbDeja=$nbInsert=$nbErreur=0; $message=date('Y/m/d - H:i:s') ." - Début de la récupération des informations financières du $dateDebut au $dateFin...".EOL; $strMessage.=$message; echo $message; echo date('Y/m/d - H:i:s') ." - La durée maximum entre chaque requête est de $tempsMaxEntreRequetes secondes.". EOL; while ($dateCour<=$dateF/* || $lastJO*/) { // Boucle sur les dates $dateDebut = WDate::dateT('Ymd', 'd/m/Y', $dateCour); $dateFrom = str_replace('/','%2F', $dateDebut); $dateFin = WDate::dateT('Ymd', 'd/m/Y', getNextDate($dateCour,1)); $dateTo = str_replace('/','%2F', $dateFin); echo date('Y/m/d - H:i:s') ." - Traitement des annonces d'informations financières du $dateDebut au $dateFin...".EOL; /** Cookie de session **/ $url='http://www.info-financiere.fr/search.php'; $referer=''; $page=getUrl($url, '', '', $referer, false); $body=$page['body']; $cookie=@$page['header']['Set-Cookie']; $referer=$url; echo date('Y/m/d - H:i:s') .' - Cookie = "'. trim($cookie) .'"' . EOL; /** Première page de la recherche **/ $url="http://www.info-financiere.fr/search.php?action=search&by=avancee&type=&stype=%C2%A0&datefrom=$dateFrom&dateto=$dateTo&societe=&q=&x=0&y=0"; $page=getUrl($url, $cookie, '', $referer); $body=$page['body']; if (preg_match('/

Nombre de résultats :<\/strong>(.*)<\/p>/Uim', $body, $matches)) $nbAnnonces=trim($matches[1]); else { print_r($page); die('Erreur : Aucun résultat trouvé'.EOL); } $nbPages=round($nbAnnonces/10); echo date('Y/m/d - H:i:s') . " - Nombre du publication du $dateDebut au $dateFin : $nbAnnonces soit $nbPages page(s)...". EOL; if ($nbPages>100) { echo date('Y/m/d - H:i:s') . " - ERREUR : Arrêt du traitement car il y a plus de 100 pages d'annonces !". EOL; die(); } if ($nbAnnonces>0) { /* select('balo_ireg', 'count(*) AS nb', "docDate BETWEEN '$dateDb 00:00:00' AND '$dateDb 23:59:59'", false, MYSQL_ASSOC); $nbAnnDb=$AnnDb[0]['nb']; if ($nbAnnDb>=$nbAnnonces) { $message=date('Y/m/d - H:i:s') ." - Les $nbAnnonces annonces DJO infos financières du $dateDebut ($dateDb) sont en base ($nbAnnDb) !". EOL; $strMessage.=$message; echo $message; randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes); $dateCour=getNextDate($dateCour,1); continue; } elseif ($nbAnnDb>0 && $nbAnnDb<$nbAnnonces) { $message=date('Y/m/d - H:i:s') ." - ATTENTION : Il n'y a que $nbAnnDb annonce(s) DJO infos financières en base sur les $nbAnnonces annonces présentes au JO du $dateDebut !". EOL; $strMessage.=$message; echo $message; echo date('Y/m/d - H:i:s') .' - Tentative de récupération des annonces...'. EOL; } else { $message=date('Y/m/d - H:i:s') ." - Il y a $nbAnnDb annonce(s) DJO infos financières en base sur les $nbAnnonces annonces présentes au JO du $dateDebut !". EOL; $strMessage.=$message; echo $message; } $tabAnnonces=explode('