2012-10-16 07:44:31 +00:00
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
< ? php
include_once ( FWK_PATH . 'common/chiffres.php' );
include_once ( FWK_PATH . 'common/dates.php' );
include_once ( INCLUDE_PATH . 'bodacc/classMBodacc.php' );
include_once ( INCLUDE_PATH . 'insee/classMInsee.php' );
include_once ( INCLUDE_PATH . 'partenaires/classMBourse.php' );
include_once ( FWK_PATH . 'mail/sendMail.php' );
function getNextDate ( $dateCour , $nbJours = 7 ) {
$nextDate = date ( 'Ymd' , mktime ( 0 , 0 , 0 , WDate :: dateT ( 'Ymd' , 'm' , $dateCour ), WDate :: dateT ( 'Ymd' , 'd' , $dateCour ) + $nbJours , WDate :: dateT ( 'Ymd' , 'Y' , $dateCour )));
return $nextDate ;
}
function getInfosAnnonceBalo ( $annonceHtml ) {
$tabAnnBalo = array ();
2013-06-19 08:24:49 +00:00
//Soci<63> t<EFBFBD> : <b>ARGAN</b><br/>
$tabAnnBalo [ 'Societe_Nom' ] = trim ( str_replace ( chr ( 160 ), ' ' , html_entity_decode ( @ getTextInHtml ( $annonceHtml , 'Soci<63> t<EFBFBD> : <b>' , '<b>' , '</b>' ))));
2012-10-16 07:44:31 +00:00
//if ($tabAnnBalo['Societe_Nom']=='')
// $tabAnnBalo['Societe_Nom']=str_replace(chr(160),' ',html_entity_decode(@getTextInHtml($annonceHtml,'<p>BOAMF: <b>', '<b>', '</b>')));
//<p>RCS : <b>393430608 </b>
$tabAnnBalo [ 'Societe_Rcs' ] = trim ( @ getTextInHtml ( $annonceHtml , 'RCS : <b>' , '<b>' , '</b>' ));
2013-06-19 08:24:49 +00:00
// Cat<61> gorie : <b><i> BULLETIN OFFICIEL DE L'AMF </i></b><br/>
$tabAnnBalo [ 'Categorie' ] = trim ( str_replace ( chr ( 160 ), ' ' , html_entity_decode ( @ getTextInHtml ( $annonceHtml , 'Cat<61> gorie : <b><i>' , '<i>' , '</i>' ))));
// N<> d'affaire : <b>0712845</b><br />
$tabAnnBalo [ 'Num_Affaire' ] =@ getTextInHtml ( $annonceHtml , 'N<> d\'affaire : <b>' , '<b>' , '</b>' );
// Paru le : <b>08-08-2007</b> (Parution n<> <b>95</b>) <br />
2012-10-16 07:44:31 +00:00
$tmp =@ getTextInHtml ( $annonceHtml , 'Paru le : <b>' , '<b>' , '</b>' );
$tabAnnBalo [ 'Date_Parution' ] = substr ( $tmp , 6 , 4 ) . '-' . substr ( $tmp , 3 , 2 ) . '-' . substr ( $tmp , 0 , 2 );
2013-06-19 08:24:49 +00:00
// (Parution n<> <b>95</b>) <br />
$tabAnnBalo [ 'Num_Parution' ] =@ getTextInHtml ( $annonceHtml , '(Parution n<> <b>' , '<b>' , '</b>' );
2012-10-16 07:44:31 +00:00
/*< p > Annonce au format
< a class = " grisbleu " href = " http://balo.journal-officiel.gouv.fr/html/2007/0808/200708080712646.htm " target = " _blank " >< b > HTML </ b ></ a > ou
< a class = " grisbleu " href = " https://balo.journal-officiel.gouv.fr/pdf/2007/0808/200708080712646.pdf " target = " _blank " >< b > PDF </ b ></ a ></ p >*/
$tabAnnBalo [ 'Url_Annonce_Html' ] = str_replace ( chr ( 160 ), ' ' , html_entity_decode ( @ getTextInHtml ( $annonceHtml , '<p>Annonce au format' , 'href="' , '" target="_blank"><b>HTML</b></a>' )));
$tabAnnBalo [ 'Url_Annonce_Pdf' ] = str_replace ( 'https://' , 'http://' , str_replace ( chr ( 160 ), ' ' , html_entity_decode ( @ getTextInHtml ( $annonceHtml , 'target="_blank"><b>HTML</b></a> ou' , 'href="' , '" target="_blank"><b>PDF</b></a></p>' ))));
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]
2013-06-19 08:24:49 +00:00
Recup<EFBFBD> re les derni<EFBFBD> res annonces BALO sur le site de la DJO .
2012-10-16 07:44:31 +00:00
2013-06-19 08:24:49 +00:00
Sans aucun param<EFBFBD> tre , r<EFBFBD> cup<EFBFBD> ration des derni<EFBFBD> res Annonces .
2012-10-16 07:44:31 +00:00
Sinon :
2013-06-19 08:24:49 +00:00
- d : JJ / MM / AAAA Date de d<EFBFBD> but de publication
2012-10-16 07:44:31 +00:00
- f : JJ / MM / AAAA Date de fin de publication
2013-06-19 08:24:49 +00:00
- l Derni<EFBFBD> re parution uniquement ( * )
- n : X Intervalle MIN en secondes entre les requ<EFBFBD> tes sur le site des JO ( d<EFBFBD> faut = $tempsMinEntreRequetes )
- i : X \ " MAX \" \" \" \" \" \" \" \" \" \" (d<> faut= $tempsMaxEntreRequetes )
2012-10-16 07:44:31 +00:00
" ;
$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 ;
}
2013-06-19 08:24:49 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - DEBUT du la r<> cup<75> ration du $strLast JO BALO $strDates " . EOL ;
echo date ( 'Y/m/d - H:i:s' ) . ' - La dur<75> e maximum entre chaque requ<71> te est de ' . $tempsMaxEntreRequetes . ' secondes.' . EOL ;
2012-10-16 07:44:31 +00:00
flush ();
while ( $dateCour <= $dateF || $lastJO ) { // Boucle sur les dates
2013-06-19 08:24:49 +00:00
//for ($i_reg=0; isset($tabReg[$i_reg]) || $lastJO; $i_reg++) { // Boucle sur les r<> gions
2012-10-16 07:44:31 +00:00
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</A> <span style="font-size:10px">(' , '10px">(' , ')</span></P>' );
randsleep ( $tempsMinEntreRequetes , $tempsMaxEntreRequetes );
}
2013-06-19 08:24:49 +00:00
if ( $lastJO == true ) { // Cas r<> cup dernier JO
2012-10-16 07:44:31 +00:00
$dateAff = $dateDerParution ;
$url = 'http://www.journal-officiel.gouv.fr/balo/index.php?ACTION=showLast' ;
2013-06-19 08:24:49 +00:00
} else { // On est pas dans la r<> cup<75> ration du JO Assoc Jiur
2012-10-16 07:44:31 +00:00
$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 , '<a href="index.php?ctx=' , 'ctx=' , '&page=' );
2013-06-19 08:24:49 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - Cl<43> Ctx = "' . $ctx . '"' . EOL ;
2012-10-16 07:44:31 +00:00
$nbAnnonces =@ getTextInHtml ( $body , '<h1>RÉSULTAT DE LA RECHERCHE :</h1>' , '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 ();
}
2013-06-19 08:24:49 +00:00
// On recherche si nous n'avons pas d<> j<EFBFBD> toutes ces annonces en base !
2012-10-16 07:44:31 +00:00
$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 ) {
2013-06-19 08:24:49 +00:00
$message = date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Il n\'y a que ' . $nbAnnDb . ' annonces en base sur les ' . $nbAnnonces . ' annonces pr<70> sentes au JO BALO du ' . $dateDerParution . ' !' . EOL ;
2012-10-16 07:44:31 +00:00
echo $message ;
2013-06-19 08:24:49 +00:00
/* mail ( 'ylenaour@scores-decisions.com' , 'JO BALO' , $message );
2012-10-16 07:44:31 +00:00
mail ( 'lenaoury@gmail.com' , 'JO BALO' , $message );
echo date ( 'Y/m/d - H:i:s' ) . ' - FIN du script' . EOL ;
2013-06-19 08:24:49 +00:00
die (); */
2012-10-16 07:44:31 +00:00
}
$tabAnnonces = explode ( '<div class="hr"><hr/></div>' , $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 ( '<div class="hr"><hr/></div>' , $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 ) {
2013-06-19 08:24:49 +00:00
/** Recherche du code ISIN / infos boursi<73> res **/
2012-10-16 07:44:31 +00:00
$iBourse = new MBourse ( $siren );
$isin = $iBourse -> getCodeIsin ( $siren );
$strIsin = " (Isin= $isin ) " ;
} else
$strIsin = " " ;
2013-06-19 08:24:49 +00:00
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<6E> $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');
}
2012-10-16 07:44:31 +00:00
//echo '<table border="1"><tr><td>'. $page['body'] .'</td></tr></table><hr/>';
$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 )
2013-06-19 08:24:49 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Probl<62> me de cr<63> ation du PDF ' . basename ( $infoAnnBalo [ 'Url_Annonce_Pdf' ]) . ' pour le SIREN ' . $infoAnnBalo [ 'Societe_Rcs' ] . EOL ;
2012-10-16 07:44:31 +00:00
@ 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 );
2013-06-19 08:24:49 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Insertion impossible de l\'annonce MySql n<> ' . mysql_errno () . ') : ' . mysql_error () . EOL ;
2012-10-16 07:44:31 +00:00
}
$numParution = $infoAnnBalo [ 'Num_Parution' ];
}
2013-06-19 08:24:49 +00:00
/** T<EFBFBD> l<EFBFBD> chargement du dernier balo complet en PDF
2012-10-16 07:44:31 +00:00
**/
$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 )
2013-06-19 08:24:49 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Probl<62> me de cr<63> ation du PDF ' . $anneeParution . '_' . sprintf ( " %03d " , $numParution ) . '_monte_final.PDF' . ' du balo complet !' . EOL ;
2012-10-16 07:44:31 +00:00
@ fclose ( $fp );
2013-06-19 08:24:49 +00:00
echo date ( " Y/m/d - H:i:s " ) . ' - BALO complet n<> ' . sprintf ( " %03d " , $numParution ) . '_monte_final.PDF t<> l<EFBFBD> charg<72> .' . EOL ;
2012-10-16 07:44:31 +00:00
} else
2013-06-19 08:24:49 +00:00
echo date ( " Y/m/d - H:i:s " ) . ' - BALO complet n<> ' . sprintf ( " %03d " , $numParution ) . '_monte_final.PDF d<> j<EFBFBD> t<> l<EFBFBD> charg<72> .' . EOL ;
2012-10-16 07:44:31 +00:00
$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 );
2013-06-19 08:24:49 +00:00
?>