#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini ARGAN
$tabAnnBalo['Societe_Nom']=trim(str_replace(chr(160),' ',html_entity_decode(@getTextInHtml($annonceHtml,'Société : ', '', '')))); //if ($tabAnnBalo['Societe_Nom']=='') // $tabAnnBalo['Societe_Nom']=str_replace(chr(160),' ',html_entity_decode(@getTextInHtml($annonceHtml,'

BOAMF: ', '', ''))); //

RCS : 393430608 $tabAnnBalo['Societe_Rcs']=trim(@getTextInHtml($annonceHtml, 'RCS : ', '', '')); // Catégorie : BULLETIN OFFICIEL DE L'AMF
$tabAnnBalo['Categorie']=trim(str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, 'Catégorie : ', '', '')))); // N° d'affaire : 0712845
$tabAnnBalo['Num_Affaire']=@getTextInHtml($annonceHtml, 'N° d\'affaire : ', '', ''); // Paru le : 08-08-2007 (Parution n°95)
$tmp=@getTextInHtml($annonceHtml, 'Paru le : ', '', ''); $tabAnnBalo['Date_Parution']=substr($tmp,6,4).'-'.substr($tmp,3,2).'-'.substr($tmp,0,2); // (Parution n°95)
$tabAnnBalo['Num_Parution']=@getTextInHtml($annonceHtml, '(Parution n°', '', ''); /*

Annonce au format HTML ou PDF

*/ $tabAnnBalo['Url_Annonce_Html']=str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, '

Annonce au format', 'href="', '" target="_blank">HTML'))); $tabAnnBalo['Url_Annonce_Pdf']=str_replace('https://', 'http://', str_replace(chr(160), ' ', html_entity_decode(@getTextInHtml($annonceHtml, 'target="_blank">HTML ou', 'href="', '" target="_blank">PDF

')))); return $tabAnnBalo; } $repBalo='/home/data/balo/'; // Avec slash final SVP !!! $repBaloComp='/home/data/balo/full/'; // Avec slash final SVP !!! $tempsMinEntreRequetes=5; $tempsMaxEntreRequetes=30; set_time_limit(0); $iDb=new WDB();/* $iInsee=new MInsee(); $iBourse=new MBourse(); */ $cookie=''; $dateDerParution=$dateCour=$dateF=false; $strInfoProg='Usage : '.basename($argv[0]). " [OPTION] Recupère les dernières annonces BALO 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ère parution 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"); } } } } if ($lastJO==true) { $strLast=' dernier'; $strDates=''; } else { $strLast=''; if ($dateFin==false) { $dateFin=date('d/m/Y'); $dateF=WDate::dateT('d/m/Y', 'Ymd', $dateFin); } if ($dateDebut==false) die($strInfoProg); else $strDates=" du $dateDebut au $dateFin"; $dateCour=$dateDeb; } echo date('Y/m/d - H:i:s') ." - DEBUT du la récupération du$strLast JO BALO$strDates".EOL; echo date('Y/m/d - H:i:s') .' - La durée maximum entre chaque requête est de '. $tempsMaxEntreRequetes .' secondes.'. EOL; flush(); while ($dateCour<=$dateF || $lastJO) { // Boucle sur les dates //for ($i_reg=0; isset($tabReg[$i_reg]) || $lastJO; $i_reg++) { // Boucle sur les régions if ($cookie=='') { $referer=''; $url='http://www.journal-officiel.gouv.fr/balo/'; $page=getUrl($url, '', '', $referer); $referer=$url; $body=$page['body']; $cookie=$page['header']['Set-Cookie']; echo date('Y/m/d - H:i:s') .' - Cookie = "'. trim($cookie) .'"' . EOL; $dateDerParution=@getTextInHtml($body, 'Dernière parution (', '10px">(', ')

'); randsleep($tempsMinEntreRequetes,$tempsMaxEntreRequetes); } if ($lastJO==true) { // Cas récup dernier JO $dateAff=$dateDerParution; $url='http://www.journal-officiel.gouv.fr/balo/index.php?ACTION=showLast'; } else { // On est pas dans la récupération du JO Assoc Jiur $dateAff=WDate::dateT('Ymd', 'd/m/Y',$dateCour); $dateFmt=str_replace('/', '%2F', $dateAff); $url="http://www.journal-officiel.gouv.fr/balo/index.php?ACTION=Rechercher&HI_PAGE=1&HI_COMPTEUR=0&original_method=get&SOCIETE_NAME=&WHAT=&RCS=&NUM_AFF=&JPA_D_D=$dateFmt&JPA_D_F=$dateFmt&ID_BALO=&rechercher.x=0&rechercher.y=0&rechercher=Rechercher"; } $page=getUrl($url, $cookie, '', $referer); $referer=$url; $body=$page['body']; $ctx=@getTextInHtml($body, 'RÉSULTAT DE LA RECHERCHE :', 'recherche :', 'annonce(s) correspondent'); //die(print_r($body)); $nbPages=ceil($nbAnnonces/10); if ($lastJO==true) echo date('Y/m/d - H:i:s') ." - Derniere parution BALO le $dateDerParution de $nbAnnonces annonces ($nbPages pages)...". EOL; else echo date('Y/m/d - H:i:s') ." - Parution BALO du $dateAff de $nbAnnonces annonces ($nbPages pages)...". EOL; if ($nbPages>100) { echo date('Y/m/d - H:i:s') .' - ERREUR : Il y a plus de 100 pages d\'annonces !'. EOL; die(); } // On recherche si nous n'avons pas déjà toutes ces annonces en base ! $dateDb=substr($dateAff,6,4).'-'.substr($dateAff,3,2).'-'.substr($dateAff,0,2); $AnnDb=$iDb->select('balo', 'count(*)', "Date_Parution='$dateDb'"); $nbAnnDb=$AnnDb[0][0]; if ($nbAnnDb==$nbAnnonces) { echo date('Y/m/d - H:i:s') .' - Toutes les annonces du '. $dateAff .' sont en base !'. EOL; if ($lastJO) { echo date('Y/m/d - H:i:s') .' - FIN du script'. EOL; die(); } $dateCour=getNextDate($dateCour,1); randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes); continue; } elseif ($nbAnnDb>0 && $nbAnnDb<$nbAnnonces) { $message=date('Y/m/d - H:i:s') .' - ERREUR : Il n\'y a que '. $nbAnnDb .' annonces en base sur les '. $nbAnnonces .' annonces présentes au JO BALO du '. $dateDerParution .' !'. EOL; echo $message; /* mail('ylenaour@scores-decisions.com', 'JO BALO', $message); mail('lenaoury@gmail.com', 'JO BALO', $message); echo date('Y/m/d - H:i:s') .' - FIN du script'. EOL; die();*/ } $tabAnnonces=explode('

', $page['body']); for ($j=1; $j<11 && isset($tabAnnonces[$j]); $j++) $tabAnnBalo[($j-1)]=$tabAnnonces[$j]; randsleep($tempsMinEntreRequetes,$tempsMaxEntreRequetes); for ($i=2; $i<=$nbPages; $i++) { $url='http://www.journal-officiel.gouv.fr/balo/index.php?ctx='.$ctx.'&page='.$i; $page=getUrl($url, $cookie, '', $referer, false, 'www.journal-officiel.gouv.fr'); $referer=$url; //print_r($page); $tabAnnonces=explode('

', $page['body']); for ($j=1; $j<11; $j++) { //$k=$j+(10*($i-1)); $k=10*($i-1)+($j-1); if ($k<$nbAnnonces) $tabAnnBalo[$k]=$tabAnnonces[$j]; } flush(); if ($i==2) echo date('Y/m/d - H:i:s') ." - Page $i/$nbPages"; else echo ", $i/$nbPages"; if ($i==$nbPages) echo '.'.EOL; else randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes); } //print_r($tabAnnBalo[$i]); //die(); for ($i=0; $i<$nbAnnonces; $i++){ $infoAnnBalo=getInfosAnnonceBalo($tabAnnBalo[$i]); $anneeParution=substr($infoAnnBalo['Date_Parution'],0,4); $i2=$i+1; $siren=$infoAnnBalo['Societe_Rcs']; $isin=''; if ($siren>1000000) { /** Recherche du code ISIN / infos boursières **/ $iBourse=new MBourse($siren); $isin=$iBourse->getCodeIsin($siren); $strIsin="(Isin=$isin) "; } else $strIsin=""; echo date('Y/m/d - H:i:s') ." - Annonce n°$i2/$nbAnnonces, Siren $siren $strIsin: ".$infoAnnBalo['Societe_Nom'] .EOL; $nbBoucles=0; while (1) { $nbBoucles++; $page=getUrl($infoAnnBalo['Url_Annonce_Html'], '', '', '', false, 'balo.journal-officiel.gouv.fr'); // [code] => 301 // ['header']['Location'] => http://www.journal if ($page['code']==301) { echo date('Y/m/d - H:i:s') ." - On patiente $nbBoucles fois...". EOL; sleep(3600); } elseif ($page['code']==200) break; else { echo date('Y/m/d - H:i:s') ." - On a patienté $nbBoucles fois avant d'obtenir pour cette URL : ".$infoAnnBalo['Url_Annonce_Html'].EOL; print_r($page); } // echo $infoAnnBalo['Url_Annonce_Html']; // $page=getUrl($infoAnnBalo['Url_Annonce_Html'], '', '', '', false, 'balo.journal-officiel.gouv.fr'); } //echo '
'. $page['body'] .'

'; $infoAnnBalo['Annonce_Html']=$page['body']; randsleep($tempsMinEntreRequetes,$tempsMaxEntreRequetes); $tabPdf=getPdfInfo($repBalo.$anneeParution.'/'.basename($infoAnnBalo['Url_Annonce_Pdf'])); if (!$tabPdf) { $page=getUrl($infoAnnBalo['Url_Annonce_Pdf']); @mkdir($repBalo.$anneeParution); $fp=@fopen($repBalo.$anneeParution.'/'.basename($infoAnnBalo['Url_Annonce_Pdf']), 'w'); if (!fwrite($fp, $page['body']) || !$fp) echo date('Y/m/d - H:i:s') .' - ERREUR : Problème de création du PDF '. basename($infoAnnBalo['Url_Annonce_Pdf']) .' pour le SIREN '. $infoAnnBalo['Societe_Rcs'] . EOL; @fclose($fp); $tabPdf=getPdfInfo($repBalo.$anneeParution.'/'.basename($infoAnnBalo['Url_Annonce_Pdf'])); randsleep($tempsMinEntreRequetes, $tempsMaxEntreRequetes); } $infoAnnBalo['pdfSize'] = $tabPdf['pdfSize']; $infoAnnBalo['pdfVer'] = $tabPdf['version']; $infoAnnBalo['pdfPage'] = $tabPdf['nbPages']; if (!$iDb->insert('balo', $infoAnnBalo)) { print_r($infoAnnBalo); echo date ('Y/m/d - H:i:s') .' - ERREUR : Insertion impossible de l\'annonce MySql n°'. mysql_errno() .') : '. mysql_error() . EOL; } $numParution=$infoAnnBalo['Num_Parution']; } /** Téléchargement du dernier balo complet en PDF **/ $url = 'http://www.journal-officiel.gouv.fr/balo/'.sprintf("%03d", $numParution).'_monte_final.PDF'; if (!file_exists($repBaloComp.$anneeParution.'_'.sprintf("%03d", $numParution).'_monte_final.PDF')) { randsleep($tempsMinEntreRequetes,$tempsMaxEntreRequetes); $page=getUrl($url, '', '', 'http://www.journal-officiel.gouv.fr/balo/', false, 'www.journal-officiel.gouv.fr'); @mkdir($repBaloComp.$anneeParution); $fp=fopen($repBaloComp.$anneeParution.'/'.$anneeParution.'_'.sprintf("%03d", $numParution).'_monte_final.PDF', 'w'); if (!fwrite($fp, $page['body']) || !$fp) echo date('Y/m/d - H:i:s') .' - ERREUR : Problème de création du PDF '. $anneeParution.'_'.sprintf("%03d", $numParution).'_monte_final.PDF' .' du balo complet !' . EOL; @fclose($fp); echo date("Y/m/d - H:i:s") . ' - BALO complet n° '.sprintf("%03d", $numParution).'_monte_final.PDF téléchargé.'.EOL; } else echo date("Y/m/d - H:i:s") . ' - BALO complet n° '.sprintf("%03d", $numParution).'_monte_final.PDF déjà téléchargé.'.EOL; $tabPdf=getPdfInfo($repBaloComp.$anneeParution.'/'.$anneeParution.'_'.sprintf("%03d", $numParution).'_monte_final.PDF'); if ($tabPdf) { $taillePdf=$tabPdf['pdfSize']/1024; echo date("Y/m/d - H:i:s") . ' - Fichier '.sprintf("%03d", $numParution).'_monte_final.PDF : '.$tabPdf['nbPages']." pages ($taillePdf ko, ".$tabPdf['version'].')'.EOL; } if ($lastJO) { echo date('Y/m/d - H:i:s') .' - FIN du script'. EOL; die(); } $dateCour=getNextDate($dateCour,1); } echo date('Y/m/d - H:i:s') .' - FIN du script'. EOL; sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'JO BALO', $message); ?>