Changeset 65635 in spip-zone


Ignore:
Timestamp:
Sep 6, 2012, 6:37:59 PM (7 years ago)
Author:
maieul@…
Message:

debug de de l'extraction depuis gateway, suite au changement de leur structure

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spip-bible/trunk/traduction/gateway.php

    r53493 r65635  
    1212        $id_trad = $gateway[0];
    1313        $nom_trad = $gateway[1];
    14        
    15        
    16        
    1714        $verset_debut=='' ? $verset_debut = 1 : $verset_debut = $verset_debut;
    1815        //reperer le numero de livre
    1916        include_spip('inc/bible_tableau');
    20        
    2117        //petit livre ?
    2218        $petit_livre=bible_tableau('petit_livre',$lang);
    23 
    2419        if (in_array(strtolower($livre),$petit_livre)) {
    25                
    26                 $verset_debut=$chapitre_debut;
    27                
     20                $verset_debut=$chapitre_debut;         
    2821                $verset_fin = $chapitre_fin;
    2922                $chapitre_debut = 1;
     
    3124       
    3225        }
    33 
    34        
     26    settype($verset_fin,'int');
     27        settype($verset_debut,'int');
     28        settype($chapitre_debut,'int');
     29        settype($chapitre_fin,'int');
    3530        $livre_gateways = bible_tableau('gateway');
    3631        $livre_gateway =$livre_gateways[$lang];
     
    3833        foreach ($livre_gateway as $li=>$id){   
    3934                if (strtolower($li)==strtolower($livre)){
    40                         $livre=$id;
     35                        $livre=$li;
    4136                        break;
    4237                }
    4338               
    44         }
    45        
    46        
    47        
     39        }       
    4840        include_spip("inc/distant");
    4941        include_spip("inc/charsets");
    50        
    5142        $texte = '';
    5243        $i = $chapitre_debut;
    53        
    54         $resultat = array();
    5544        while ($i<=$chapitre_fin){
    56                 // recuperer le fichier
    57                
    58                
    59                 $url = 'http://www.biblegateway.com/passage/?book_id='.$livre.'&version='.$id_trad.'&chapter='.$i;
    60                
     45                // recuperer le fichier, par chapitre, plus simple (mais plus long, on reconnait)
     46                $url = 'http://mobile.biblegateway.com/passage/?search='.$livre.'+'.$i.'&version='.$nom_trad;
    6147                $i == $chapitre_debut ? $verset_debut = $verset_debut : $verset_debut = 1;       
    62                
    63                
     48                $i == $chapitre_fin ? $verset_fin = $verset_fin : $verset_fin = 9999999;
     49                if ($verset_fin ==0){
     50                     $verset_fin=99999;   
     51                }
     52                // preparer pour querypath,  nettoyage
    6453                $code = importer_charset(recuperer_page($url,'utf-8'));
    65                
    66                 $tableau = explode('<div class="result-text-style-normal">',$code);
    67                 $code=$tableau[1];
    68                 $tableau = explode('</div',$code);
    69                 $code=$tableau[0];
    70                
    71                
    72                
    73                 $tableau=explode('</h4>',$code);
    74                 $code=$tableau[1];
    75                 if(preg_match('#<strong>Footnotes:</strong>#',$code)){
    76                         $tableau = explode('<strong>Footnotes:</strong>',$code);
    77                         $code = $tableau[0];
     54                $tab = explode('<body class="with-alert">',$code);
     55                $code = $tab[1];
     56                $tab = explode('<div class="result-text-style-normal text-html ">',$code);
     57                $code = $tab[1];
     58                $tab = explode('<div class="foo',$code);
     59                $code = $tab[0];
     60                $tab = explode('<div class="passage',$code);
     61                $code = $tab[0];
     62                $code = '<div>'.strip_tags($code,'<span><sup><h3><h2>').'</div>';
     63            $versets = array();
     64            include_spip('inc/querypath');
     65           
     66            // Analyse proprement dite
     67                $qp = spip_query_path($code,'',array('ignore_parser_warnings'=>true,'omit_xml_declaration'=>true,'encoding'=>'UTF-8','use_parser'=>'xml'));
     68                $qp->remove('sup,h3,h2,.chapternum,.indent-1-breaks');// on filtre de tout ce qui est inutile
     69                $spans  = $qp->children();
     70                $id = 1; // id par défaut du verse
     71                foreach ($spans as $span){ // chaque 'span' de premier niveau
     72                    $text = $span->text();
     73                    $class = extraire_attribut($span->xml(),'class');
     74                    $infos = explode('-',$class);
     75                    if (count($infos) ==3){ // si on change de verset
     76                        $id = $infos[2];
     77                        settype($id,'int');
     78                    }
     79                    if ($id > $verset_debut-1 and $id < $verset_fin+1) {
     80                        $versets[$id] = trim($versets[$id].' '.$text);
     81                    }
     82                    if ($id > $verset_fin){
     83                        break;
     84                    }
    7885                }
    79                
    80                 //suppression des intertitres
    81                 $code = gateway_supprimer_intertitre($code);
    82                
    83                 //supprerssion des balises
    84                 $code = str_replace('<p />','<br />',$code);
    85                 $code = str_replace(' class="sup">',"><sup>",$code);
    86                 $code = str_replace('</span>',' </sup>',$code);
    87                 $code = strip_tags($code,'<sup><br>');
    88                
    89                 $code = supprimer_note($code);
    90                
    91                 //suprresion des attributs html dans les sup
    92            
    93          $code = preg_replace('#class="versenum"#','',$code);
    94          $code = preg_replace("#value='[0-9]*'#",'',$code);
    95          $code = preg_replace('#  id="'.$lang.'-'.$nom_trad.'-[0-9]*"#','',$code);
    96                
    97                 if ($verset_fin!=''){
    98                 //selection des verset
    99                    $sup = '<sup>'.$verset_debut.'</sup>';
    100                    
    101            
    102 
    103            
    104            
    105            
    106              
    107             $tableau = explode($sup,$code);
    108                        
    109                        
    110                         $code   =  '<sup>'.$verset_debut.'</sup>'.$tableau[1];
    111                        
    112                         if ($i == $chapitre_fin){
    113                                 $v = $verset_fin+1;
    114                                 $sup = '<sup>'.$v.'</sup>';
    115                                 $tableau        = explode($sup,$code);
    116                                
    117                                 $code           = trim($tableau[0]);
    118                                
    119                                 }
    120                        
    121                        
    122                        
    123                 }
    124                
    125                 $versets = array();
    126                 $array = array();
    127                 $code = preg_replace("#<br />#","",$code);
    128                 $code = preg_replace("*&nbsp;*"," ",$code);
    129                
    130                 preg_match_all("#<sup>([0-9]*)</sup>#",$code,$versets);
    131                 $texte_verset = preg_split('#<sup>([0-9]*)</sup>#',$code);
    132        
    133                 array_shift($texte_verset);     
    134 
    135                 //var_dump($texte_verset);
    136                 $j  = 0;
    137                 foreach ($versets[1] as $verset){
    138                         $array[$verset] = trim($texte_verset[$j]);
    139                         $j++;   
    140                 }
    141                 $resultat[$i] = $array;
    142                
    143 
    144                 $i++;
    145                 }
    146     if (_NO_CACHE == 0){
    147                 bible_ecrire_cache($param_cache,$resultat);
    148         }
    149     return $resultat;
    150        
    151 }
    152 
    153 function supprimer_note($texte){
    154    
    155     //on boucle tant qu'on trouve des value
    156     while(preg_match("#value='#",$texte)){
    157        
    158         $texte = vider_attribut($texte,'value');
    159    }
    160    
    161     $texte = str_replace(" class='footnote'",'',$texte);
    162     $texte = preg_replace("#\[[a-z]*\]#i",'',$texte);
    163  
    164     $texte = str_replace("<sup></sup>",'',$texte);
    165    
    166     return $texte;
    167 
    168 }
    169 
    170 function gateway_supprimer_intertitre($code){
    171    
    172     $tableau = explode('<h5 class="passage-header">',$code); // on fait un tableau
    173     $i = 0;
    174    
    175     foreach($tableau as $chaine){   // on parcour le tableau, et on supprimer ce qu'il y a avant le </h5>
    176         $tableau2 = explode('</h5>',$chaine);
    177        
    178         if (count ($tableau2)==2){  //important de tester que le tableau contient bien deux entrées, pour le cas où on est avant l'intertitre
    179             $tableau[$i]=$tableau2[1];
    180  
    181         }
    182         else{
    183             $tableau[$i]=$tableau2[0];       
    184        
    185         }
     86        $chapitres[$i] = $versets;
    18687       
    18788        $i++;
    188    
    189     }
    190    
    191     $code = implode('',$tableau);
    192    
    193     return $code;
    194 }
    195 function traiter_sup($code,$abreviation,$lang){
    196  
    197     $code = preg_replace(" #class=\"versenum\"#i","",$code);
    198     $code = preg_replace('# id="'.$lang.'-'.$abreviation.'-[0-9]*"#',"",$code);
    199     $code = str_replace("</sup>"," </sup>",$code);
    200    
    201     return $code;
    202 }
    203 
    204 
     89        }
     90        if (_NO_CACHE == 0){
     91                bible_ecrire_cache($param_cache,$chapitre);
     92        }
     93        return $chapitres;
     94        }
    20595?>
Note: See TracChangeset for help on using the changeset viewer.