295 lines
8.9 KiB
PHP
295 lines
8.9 KiB
PHP
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
|
|
<?php
|
|
|
|
$tabZones=array(
|
|
'nom'=>'<th>Nom :(?:.*)<td>(.*)</td>',
|
|
'adresse'=>'<th>Adresse :(?:.*)<td>(.*)<br />',
|
|
'adresse2'=>'<th>Adresse :(?:.*)<td>(?:.*)<br />(.*)?<br />',
|
|
'cp'=>'<th>Adresse :(?:.*)<td>(?:.*)<br />(?:.*)?<br />(\d\d\d\d\d) ',
|
|
'ville'=>'<th>Adresse :(?:.*)<td>(?:.*)<br />(?:.*)?<br />(?:\d\d\d\d\d) (.*)</td>',
|
|
'tel'=>'<th>Tél. :(?:.*)<td>(.*)</td>',
|
|
'fax'=>'<th>Fax :(?:.*)<td>(.*)</td>',
|
|
'annee'=>'<th>Année d\'inscription :(?:.*)<td>(.*)</td>',
|
|
'mail'=>'Mail :(?:.*)<td>(?:.*);">(.*)</a></td>',
|
|
'web'=>'<th>Site web :(?:.*)<td>(.*)</td>',
|
|
'numCRCC'=>'<th>Compagnie régionale :(?:.*)page=fiche_crcc&id=(.*)&parente=',
|
|
'fj'=>'<th>Forme juridique :(?:.*)<td>(.*)</td>',
|
|
'pays'=>'<th>Agréé par (?:.*)<td>(.*)</td>',
|
|
'reseau'=>'<th>Réseau :(?:.*)<td>(.*)</td>',
|
|
'adh[nom,idAdh]'=>'<td style="padding-left:20px;">(?:.*)<strong>(.*)</strong>(?:.*)page=fiche&id=(.*)&r=&parente=',
|
|
);
|
|
|
|
$tabCRC=array( '_03'=>'Agen',
|
|
'_06'=>'Aix en Provence - Bastia',
|
|
'_09'=>'Amiens',
|
|
'_12'=>'Angers',
|
|
'_13'=>'Basse-Terre',
|
|
'_15'=>'Besançon',
|
|
'_18'=>'Bordeaux',
|
|
'_21'=>'Bourges',
|
|
'_24'=>'Caen',
|
|
'_27'=>'Chambéry',
|
|
'_30'=>'Colmar',
|
|
'_33'=>'Dijon',
|
|
'_36'=>'Douai',
|
|
'_95'=>'Fort-de-France',
|
|
'_39'=>'Grenoble',
|
|
'_42'=>'Limoges',
|
|
'_45'=>'Lyon',
|
|
'_48'=>'Metz',
|
|
'_51'=>'Montpellier',
|
|
'_54'=>'Nancy',
|
|
'_57'=>'Nîmes',
|
|
'_60'=>'Nouméa',
|
|
'_63'=>'Orléans',
|
|
'_66'=>'Paris',
|
|
'_67'=>'Paris: "CAC inscrits dans le cadre de l\'art. L822-1-3"',
|
|
'_69'=>'Pau',
|
|
'_72'=>'Poitiers',
|
|
'_75'=>'Reims',
|
|
'_78'=>'Rennes',
|
|
'_81'=>'Riom',
|
|
'_84'=>'Rouen',
|
|
'_07'=>'Saint-Denis de la Réunion',
|
|
'_87'=>'Toulouse',
|
|
'_90'=>'Versailles');
|
|
|
|
include_once(FWK_PATH.'common/curl.php');
|
|
include_once(FWK_PATH.'common/chiffres.php');
|
|
include_once(FWK_PATH.'common/dates.php');
|
|
$modeDebug=$modeFiches=false;
|
|
$numCRCC=0;
|
|
$strCRCC='';
|
|
|
|
$strInfoScript='Usage : '.basename($argv[0]). " <option>
|
|
Mise à jour des tribunaux compétents pour les codes insee des communes depuis le site du ministère de la justice.
|
|
/**@todo : Il faudrait penser à mettre à jour en automatique la liste des communes depuis le site de l'insee !!!**/
|
|
|
|
Options :
|
|
-d Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles)
|
|
-f Mode fiche
|
|
-r:XX Numéro de la CRCC
|
|
|
|
";/* -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 'd': $modeDebug=true; break;
|
|
case 'r': $numCRCC=substr($argv[$i],3); break;
|
|
case 'f': $modeFiches=true; break;
|
|
case '-':
|
|
case '?': die($strInfoScript); break;
|
|
default: die('Option '. $argv[$i] . " inconnue !\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
$iDb=new WDB('sdv1');
|
|
$table='tabCNCC';
|
|
$urlBase="http://annuaire.cncc.fr/index.php?page=liste";
|
|
$urlFiche="http://annuaire.cncc.fr/index.php?page=fiche&id=";
|
|
|
|
if ($numCRCC>0 && !@array_key_exists("_$numCRCC", $tabCRC))
|
|
die("Numéro de CRCC inexistant : $numCRCC".EOL);
|
|
elseif (!$modeFiches)
|
|
$strCRCC=" de la CRCC '".$tabCRC["_$numCRCC"]."'";
|
|
elseif ($modeFiches) {
|
|
$ret=$iDb->select('tabCNCC', 'id, type, numCRCC, nom', "dateUpdate=0", false, MYSQL_ASSOC);
|
|
$nb=count($ret);
|
|
foreach($ret as $i=>$tabCAC) {
|
|
$id=$tabCAC['id'];
|
|
$url=$urlFiche.$id;
|
|
$page=getUrl($url, '', '', '', false);
|
|
$referer=$url;
|
|
$body=$page['body'];
|
|
//print_r($page);
|
|
$tabHtml=@html2array($body, $tabZones);
|
|
foreach ($tabHtml as $zone=>$data) {
|
|
if (is_array($data)) {
|
|
foreach ($data as $j=>$tabInsert2) {
|
|
$tabInsert2['id']=$id;
|
|
$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=$id AND num=$j", false);
|
|
} else {
|
|
print_r($tabInsert2);
|
|
die(mysql_error());
|
|
}
|
|
}
|
|
}
|
|
} elseif ($zone=='mail')
|
|
$tabInsert[$zone]=str_replace('[arrobase]','@',$data);
|
|
else
|
|
$tabInsert[$zone]=$data;
|
|
}
|
|
$iDb->update($table, $tabInsert, "id=$id", false);
|
|
echo date ('Y/m/d - H:i:s')." - $i/$nb : Mise à jour du CAC n°$id, ".$tabCAC['nom'].'...'.EOL;
|
|
if ($modeDebug) randsleep(1,2);
|
|
else randsleep(7,21);
|
|
}
|
|
die();
|
|
}
|
|
|
|
$tabZones=array('type'=>'<td align="center"><img src="_img/picto_type_(PM|PP).gif"',
|
|
'id'=>'page=fiche&id=(.*)&r=',
|
|
'nom'=>'page=fiche&id=(?:.*)&r=(?:.*)">(.*)</a></td>',
|
|
);
|
|
|
|
echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des CAC".$strCRCC.'...'.EOL;
|
|
|
|
$listeCAC=array();
|
|
|
|
$post=array('recherche'=>1,
|
|
'nature_fiche'=>'toutes',
|
|
'nom_societe'=>'',
|
|
'cp_ville'=>'',
|
|
'crcc'=>$numCRCC,
|
|
'x'=>0,
|
|
'y'=>10);
|
|
$page=getUrl($urlBase, '', $post, '', false);
|
|
$referer=$urlBase;
|
|
$body=$page['body'];
|
|
|
|
if (preg_match('/<span class="float-left">Nombre de résultats \:(.*)<\/span>/Uis', $body, $matches)) {
|
|
$nbCAC=trim($matches[1]);
|
|
$nbPages=ceil($nbCAC/15);
|
|
}
|
|
|
|
echo date ('Y/m/d - H:i:s')." - Liste de $nbCAC CAC sur $nbPages pages.".EOL;
|
|
|
|
echo date ('Y/m/d - H:i:s')." - Page ";
|
|
$cookie=$page['header']['Set-Cookie'];
|
|
$pageCour=1;
|
|
while(1) {
|
|
echo "$pageCour/$nbPages, ";
|
|
$tmpListe=explode('<tr class="ligne_', $body);
|
|
foreach ($tmpListe as $i=>$tmpCAC) {
|
|
if ($i==0) continue;
|
|
$tmpCAC=preg_replace('/<\/table>.*$/Uis', '', $tmpCAC);
|
|
//echo $i.EOL.$tmpCAC;
|
|
$tabHtml=@html2array($tmpCAC, $tabZones);
|
|
$listeCAC[]=$tabHtml;
|
|
}
|
|
|
|
$pageCour++;
|
|
if ($pageCour>$nbPages) break;
|
|
//if ($pageCour>100) break;
|
|
$url=$urlBase.'&p='.$pageCour;
|
|
$page=getUrl($url, $cookie, '', $referer, false);
|
|
$referer=$url;
|
|
$body=$page['body'];
|
|
if ($modeDebug) randsleep(1,2);
|
|
else randsleep(7,21);
|
|
}
|
|
|
|
foreach ($listeCAC as $i=>$tabCAC) {
|
|
echo $tabCAC['type']."\t".$tabCAC['id']."\t".$tabCAC['nom'].EOL;
|
|
//$tabCAC['nom']=utf8_decode($tabCAC['nom']);
|
|
if ($numCRCC>0) $tabCAC['numCRCC']=$numCRCC;
|
|
//else $tabCAC['numCRCC']=NULL;
|
|
$tabCAC['dateInsert']=date('YmdHis');
|
|
$iDb->insert($table, $tabCAC, false);
|
|
if (mysql_errno()<>0 && mysql_errno()<>1062) echo mysql_error().EOL;
|
|
}
|
|
|
|
die();
|
|
/*
|
|
|
|
$iDeb=$ret[0][0];
|
|
$nbVides=0;
|
|
echo date ('Y/m/d - H:i:s')." - Dernier id entreprise '$table' = $iDeb".EOL;
|
|
µ/
|
|
|
|
for($i=$iDeb;;$i++) {
|
|
//http://www.qualifelec.fr/recherche/fiche.php?idadh=8148&PHPSESSID=i1jgdorhdighojasq5otfpc1v67drkqi
|
|
$tabInsert=array('id'=>$i);
|
|
|
|
$ret=$iDb->select($table, 'raiSoc', "id=$i", false);
|
|
if (@$ret[0][0]<>'') continue;
|
|
|
|
$url=$urlBase.$i;
|
|
$page=getUrl($url, '', '', '', false);
|
|
$referer=$url;
|
|
$body=$page['body'];
|
|
$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();
|
|
*/
|
|
?>
|