#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini Mise à jour des listes des sociétés de gestion agrées par l'AMF Options : -v Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles) -d Remplir les fiches détaillées -r=13S00000 Traiter ce numéro de RCI ";/* -i:XXXXX Reprendre au code commune Insee XXXXX ";*/ $argv=$_SERVER['argv']; for ($i=1,$j=0; isset($argv[$i]); $i++) { if (substr($argv[$i],0,1)=='-') { switch (substr($argv[$i],1,1)) { case 'v': $modeDebug=true; break; case 'd': $modeDetail=true; break; case 'r': $modeRCI=trim(substr($argv[$i],3,strlen($argv[$i])-1)); break; case '-': case '?': die($strInfoScript); break; default: die('Option '. $argv[$i] . " inconnue !\n"); } } } $iDb=new WDB('tmp'); $table='rcMonaco'; //$urlBase='http://www.amf-france.org/bio/rech_SG.aspx'; $referer='http://www.rci.gouv.mc/index.jsp'; $urlRecherche='http://www.rci.gouv.mc/resultatRecherche'; $urlDetailS='http://www.rci.gouv.mc/ficheSGratuit.jsp?rc='; $urlDetailPP='http://www.rci.gouv.mc/fichePPGratuit.jsp?rc='; $tabZonesS=array('codeRCI'=>'Numéro RCI :(.*)
', 'etat'=>'Etat :(.*)
', 'forme'=>'Structure :(.*)
', 'rs'=>'Raison sociale :(.*)
', 'activite'=>'Activité :(.*)
(?:\s+)', 'etab'=>'

(.*)

', 'etabType'=>'

(.*)


', 'etabEns'=>'

(.*)

', 'ensAdr1'=>'Adresse :(?:.*)(.*)
(?:.*)
(?:.*)
(?:.*)', 'ensAdr2'=>'Adresse :(?:.*)(?:.*)
(.*)
(?:.*)
(?:.*)', 'ensAdr3'=>'Adresse :(?:.*)(?:.*)
(?:.*)
(.*)
(?:.*)', 'ensAdr4'=>'Adresse :(?:.*)(?:.*)
(?:.*)
(?:.*)
(.*)', ); $tabZonesPP=array('codeRCI'=>'Numéro RCI :(.*)
', 'etat'=>'Etat :(.*)
', 'forme'=>'Structure :(.*)
', 'rs'=>'Commerce exercé sous le nom :(.*)
', 'formePP'=>'

Etat-civil du déclarant

(?:.*)

(.*)


', 'nom'=>'Nom :(.*)
', 'prenom'=>'Prénom :(.*)
', 'nomJF'=>'Nom de jeune fille :(.*)
', 'activite'=>'Activité de l\'établissement :(.*)
(?:\s+)', 'etab'=>'(?:.*)

(.*)

(?:.*)'

(.*)


', 'etabEns'=>'

(.*)

', 'ensAdr1'=>'Adresse :(?:.*)(.*)
(?:.*)
(?:.*)
(?:.*)', 'ensAdr2'=>'Adresse :(?:.*)(?:.*)
(.*)
(?:.*)
(?:.*)', 'ensAdr3'=>'Adresse :(?:.*)(?:.*)
(?:.*)
(.*)
(?:.*)', 'ensAdr4'=>'Adresse :(?:.*)(?:.*)
(?:.*)
(?:.*)
(.*)', ); echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des entreprises '$table'...".EOL; //$letIni=file_get_contents (REP_TEMP.$table); //$letIni='AVK'; if (!$modeDetail || $modeRCI) { if (!$modeRCI) { $tabSerialised=@file_get_contents(REP_TEMP.$table); if (!$tabSerialised) { if (!$nbLet) //$letIni='AAA'; for ($l1=65; $l1<91; $l1++) { //if ($letIni) $l1=ord(substr($letIni,0,1)); $L1=chr($l1); for ($l2=65; $l2<91; $l2++) { //if ($letIni) $l2=ord(substr($letIni,1,1)); $L2=chr($l2); for ($l3=65; $l3<91; $l3++) { //if ($letIni) $l3=ord(substr($letIni,2,1)); $letIni=false; $L3=chr($l3); $let=''.$L1.$L2.$L3; $tabLet[]=$let; } } } shuffle($tabLet); file_put_contents (REP_TEMP.$table, serialize($tabLet)); } else $tabLet=unserialize($tabSerialised); $nbLet=count($tabLet); echo date ('Y/m/d - H:i:s')." - Il reste $nbLet requêtes à traiter...".EOL; } else { $an=substr($modeRCI,0,2); //if ($an*1<1 || $an>99999) die("Erreur : N° RCI '$modeRCI' incorrect !"); $lettre=strtoupper(substr($modeRCI,2,1)); if ($lettre<>'S' && $lettre<>'P') die("Erreur : N° RCI '$modeRCI' incorrect !"); $numRC=substr($modeRCI,3,5); if ($numRC<1 || $numRC>99999) die("Erreur : N° RCI '$modeRCI' incorrect !"); $tabLet=array(0=>$modeRCI); $nbLet=2; } $nbDone=0; foreach ($tabLet as $j=>$let) { $nbDone++; if ($modeRCI) $url=$urlRecherche."Gratuit.jsp?mille=$an&fj=$lettre&rc=$numRC"; else $url=$urlRecherche.'RSEGratuit.jsp?rse='.$let; $page=getUrl($url, '', '', '', false); $body=$page['body']; echo date ('Y/m/d - H:i:s')." - $nbDone/$nbLet : RC Monaco '$let' ..."; if (preg_match_all('/(.*)<\/a>(?:.*)(.*)<\/td>(?:.*)(.*)<\/td>(?:.*)(.*)<\/td>(?:.*)(.*)<\/td>(?:.*)<\/tr>/Uis', $body, $matches)) { foreach($matches[2] as $i=>$numRCI) { $tabEntrep=array('codeRCI'=>trim($numRCI), 'PmPP'=>trim($matches[1][$i]), 'forme'=>trim($matches[4][$i]), 'rs'=>trim($matches[5][$i]), 'etabEns'=>trim($matches[6][$i]), 'etat'=>trim($matches[7][$i]), 'dateInsert'=>date('YmdHis')); @$iDb->insert($table, $tabEntrep); //print_r($tabEntrep); } $i++; echo "$i entreprise(s)"; } else echo "Pas d'entreprise"; echo EOL; if (!$modeRCI) { unset($tabLet[$j]); file_put_contents(REP_TEMP.$table, serialize(array_unique($tabLet))); if ($modeDebug) randsleep(1,2); else { randsleep(60,120); if (date('H')>19) die(); } } } } if ($modeDetail || $modeRCI) { if ($modeRCI) $ret=$iDb->select($table, 'id,codeRCI,PmPP', "codeRCI='$modeRCI'", false); else $ret=$iDb->select($table, 'id,codeRCI,PmPP', "activite IS NULL OR etat='' /*AND PmPP='PP'*/ ORDER BY dateInsert DESC", false); $nbLet=count($ret); foreach ($ret as $tFiche) { @$nbDone++; $id=$tFiche['id']; $rci=$tFiche['codeRCI']; $ppS=$tFiche['PmPP']; echo date ('Y/m/d - H:i:s')." - $nbDone/$nbLet : RCI Monaco '$rci' ($id) - '"; //echo date ('Y/m/d - H:i:s')." - Num Agrément : $agrNum".EOL; if ($ppS=='S') $urlFiche=$urlDetailS.$rci; elseif ($ppS=='PP') $urlFiche=$urlDetailPP.$rci; else die("Type '$ppS' inconnu !".EOL); $page=getUrl($urlFiche, '', '', $referer, false); $body=$page['body']; if ($ppS=='S') $tabZones=$tabZonesS; elseif ($ppS=='PP') $tabZones=$tabZonesPP; $tabUpdate=html2array($body, $tabZones); if (strpos($tabUpdate['ensAdr4'],'Pour de plus amples informations')>0) $tabUpdate['ensAdr4']=''; $iDb->update($table, $tabUpdate, "id=$id"); echo $tabUpdate['rs']."'".EOL; if (!$modeRCI) { if ($modeDebug) randsleep(1,2);//randsleep(7,21); else { randsleep(60,120); if (date('H')>19) die(); } } } } die(); shuffle($tabLet); file_put_contents (REP_TEMP.$table, serialize($tabLet)); die(); echo count($tabLet); //serialize print_r($tabLet); die(); $tabHtml=html2array($body, $tabZones); print_r($tabHtml); die(); $ret=$iDb->select($table, 'agrementNum', '1', false); foreach ($ret as $tAgrNum) { $agrNum=$tAgrNum['agrementNum']; echo date ('Y/m/d - H:i:s')." - Num Agrément : $agrNum".EOL; } for($i=$iDeb;;$i++) { $tabInsert=array('id'=>$i); $url=$urlBase."?NumAgr=$agrNum&DateDeb=&DateFin=&lstTypeDec=0&NomSOc=&action=new&varvalidform=on&hidRagCode=&CodeAMF=&btnvalid.x=13&btnvalid.y=15"; $page=getUrl($url, '', '', '', false); $referer=$url; $body=$page['body']; print_r($page); die(); $tabHtml=html2array($body, $tabZones); foreach ($tabHtml as $zone=>$data) { if (is_array($data)) { foreach ($data as $j=>$tabInsert2) { $tabInsert2['id']=$i; $tabInsert2['num']=$j; $tabInsert2['dateInsert']=date('YmdHis'); if (!$iDb->insert($table.$zone, $tabInsert2, false)) { if (mysql_errno()==1062) { unset($tabInsert2['dateInsert']); $iDb->update($table.$zone, $tabInsert2, "id=$i AND num=$j", false); } else { print_r($tabInsert2); die(mysql_error()); } } } } else $tabInsert[$zone]=$data; } if (count($tabInsert)<10 || $tabInsert['raiSoc']=='') { $nbVides++; if ($nbVides<20) continue; else { echo date('Y/m/d - H:i:s')." - $i : Il semble que le dernier numéro '$table' attribué soit le ".($i-$nbVides).EOL; die(); } } $nbVides=0; unset($tabInsert['qualifs']); if (isset($tabInsert['urlImg']) && $tabInsert['urlImg']<>'') { $urlLogo='http://www.qualifelec.fr/'; die($tabInsert['urlImg']); if (substr($urlLogo,0,32)=='http://www.annuaire.com/uploads/') { $extension=substr(strrchr($urlLogo,'.'),1); if (!file_exists("/home/data/logos/$siren.$extension")) { $referer=''; $tDeb=microtime(true); $page=getUrl($urlLogo, '', '', $referer, false, '', '', 60); $duree=round(microtime(true)-$tDeb,3); $body=$page['body']; $taille=round(strlen($body)/1024,1); file_put_contents("/home/data/logos/$siren.$extension",$body); } } } unset($tabInsert['urlImg']); $tabInsert['dateInsert']=date('YmdHis'); if (!$iDb->insert($table, $tabInsert, false)) { if (mysql_errno()==1062) { unset($tabInsert['dateInsert']); $iDb->update($table, $tabInsert, "id=$i", false); } else { print_r($tabInsert); die(mysql_error()); } } //die(); $nb=count($tabInsert); $nb2=@count($tabInsert2); echo date('Y/m/d H:i:s')." - $i : $nb zones et $nb2 qualifications".EOL; if ($modeDebug) randsleep(1,2); else randsleep(7,21); } die(); ?>