batch/1.1/old/getQualigaz.php
2013-06-19 08:24:49 +00:00

152 lines
5.6 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/curl.php');
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
$modeDebug=false;
$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)
";/* -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 '-':
case '?': die($strInfoScript); break;
default: die('Option '. $argv[$i] . " inconnue !\n");
}
}
}
/** URL = http://www.justice.gouv.fr/recherche-juridictions/popup.php?insee=01053&type=all
** referer = http://www.justice.gouv.fr/recherche-juridictions/consult.php
**
** URL = http://www.insee.fr/fr/nom_def_met/nomenclatures/cog/cog.telechargement.annee.asp?annee=2007
**/
$iDb=new WDB('sdv1');
$table='qualigaz';
$urlBase='http://www.qualifelec.fr/recherche/fiche.php?idadh=';
$tabZones=array('codeQE'=>'&nbsp;<b>Code QE n&deg;</b>(?:.*)&nbsp;(\d+)</td>',
//'urlImg'=>'<td align="center" height="133"><img src="(.*)"></td>',
//http://www.qualifelec.fr/recherche/fiche.php?idadh=9011&PHPSESSID=7cqetmc0e54f3th3lhhr4e3e86buikbe
// Traiter logo et catégorie + activité déclaré
'raiSoc'=>'&nbsp;<b>Raison Sociale</b>(?:.*)&nbsp;(.*)</td>',
'adresse'=>'&nbsp;<b>Adresse</b>(?:.*)<tr bordercolor="#2652A0">(?:.*)<td width="50%" height="25">&nbsp;(.*)</td>',
'chef'=>'&nbsp;<b>Chef(?:.*)entreprise</b></font></td>(?:.*)</td>(?:.*)<td width="50%" height="25">&nbsp;(.*)</td>',
'cp'=>'&nbsp;<b>Code(?:.*)Postal</b>(?:.*)<td width="50%" height="25">&nbsp;(\d\d\d\d\d)</td>',
'ville'=>'&nbsp;<b>Ville</b>(?:.*)<td width="50%" height="25">&nbsp;(\D+)</td>',
'tel'=>'&nbsp;<b>T&eacute;l&eacute;phone</b>(?:.*)&nbsp;(\d\d\d\d\d\d\d\d\d\d)</td>',
'fax'=>'&nbsp;<b>Fax</b>(?:.*)&nbsp;(?:\d\d\d\d\d\d\d\d\d\d)</td>(?:.*)&nbsp;(\d\d\d\d\d\d\d\d\d\d)</td>',
'mail'=>'&nbsp;<b>E-mail</b>(?:.*)&nbsp;<a href="mailto:(.*)">',
'web'=>'&nbsp;<b>Site(?:.*)Internet</b>(?:.*)&nbsp;<a href="(.*)" target="blank">',
'fj'=>'&nbsp;<b>Forme(?:.*)juridique</b>(?:.*)<td width="30%" height="25">&nbsp;(.*)</td>',
'siret'=>'&nbsp;<b>SIREN(?:.*)<td width="40%" height="25">&nbsp;(\d+)</td>',
'naf'=>'&nbsp;<b>Code(?:.*)NAF</b>(?:.*)<td width="30%" height="25" bordercolor="#2652A0">&nbsp;(.*)</td>',
'qualifs[qualifUrl,qualifCode,qualifLib]'=>'<tr bordercolor="#2652A0">(?:.*)<td width="20%" height="25"><a href="(.*)" target="parent">&nbsp;(.*)</a></td>(?:.*)<td width="85%" height="25">&nbsp;(.*)</td>(?:.*)</tr>',
);
echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des entreprises '$table'...".EOL;
$ret=$iDb->select('qualifelec', 'MAX(id)', '1', false);
$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();
?>