Forum des Objets Communicants et Solutions pour les Libérer...


 
AccueilAccueil  GalerieGalerie  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  

Partagez
 

 Parsing du Nabshare...

Aller en bas 
AuteurMessage
BigPanda
Kryptonite Nabz
Kryptonite Nabz
BigPanda

Age : 37
Localisation : Bruxelles
Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3)
Nbr de messages : 7127
Carottes : 11479

Parsing du Nabshare... Empty
MessageSujet: Parsing du Nabshare...   Parsing du Nabshare... Icon_minitimeVen 11 Jan 2008 - 13:19

Salut,

Ben voilà, comme promis à Tab, je met ici une copie de mon script de parsing du Nabshare...

Il récupère les titres des catégories en français puis récupère les ids présents dans les catégories françaises et anglaises.
Il stocke le tout dans un fichier php contenant un tableau multidimensionnel de type :

Code:

<?
$Nabshare = array(
   array(
      "0"=>"- Tous - ",
      "1"=>"Pub",
      "2"=>"Comique",
      "3"=>"Documents Historiques",
      "4"=>"Parole",
      "5"=>"Mix persos",
      "6"=>"Musique",
      "7"=>"Chansons",
      "8"=>"Bruitages",
      "9"=>"Bande son de films",
      "10"=>"Discours",
      "11"=>"Télé",
      "12"=>"Feuilletons"
   ),
   array(
      "257767"=>"Air France",
      "1997170"=>"allouette",
      "3343686"=>"AMR DIAB - aktar wa",
      ...
   ),
   array(
      ...
   ),
   ...
   array(
      ...
   )
);
?>

Suffit alors de faire un include du fichier en question pour pouvoir accder au tableau...
Son utilisation est assez simple :
$Nabshare[0][X] : Titre de la section dont l'ID est X
$Nabshare[X][Y] : Titre du MP3 dont l'ID est Y dans la section X.

Pour afficher tous les IDs et MP3 d'une section, un foreach($Nabshare as $id=>$title) fait parfaitement l'affaire, idem pour les catégories yellownabzsmile

La section "0" est là juste pour bidouiller un machin qui merge tous les sous-tableaux pour pouvoir tout avoir dans une seule combo (fait au moment de l'affichage)

La fonction getPage(...) utilisée par le script et définie dans functions.php(le parsing ne fonctionne que si Curl es présent sinon il sait pas spécifier les headers...)
Code:

function getPage($url, $header = null)
{
   if (function_exists("curl_init"))
   {
      $curl_handle = curl_init($url);
      curl_setopt ($curl_handle, CURLOPT_HEADER, false);
      curl_setopt ($curl_handle, CURLOPT_FRESH_CONNECT, $disableCache);
      if ($header != null)
         curl_setopt ($curl_handle, CURLOPT_HTTPHEADER, $header);

      ob_start();
      curl_exec ($curl_handle);
      $errno = curl_errno($curl_handle);
      curl_close ($curl_handle);
      $toReturn = ob_get_contents();
      ob_end_clean();   
   }
   else
   {
      $lines = @file($url);
      if (!$lines)
      {
         $toReturn = "";
         debug(ERROR, "Function file returned an error!");
      }         
      else
         $toReturn = implode('', $lines);
   }
   return $toReturn;
}

Et enfin le code de parsing à proprement parler :
Code:

<?
include_once("../includes/functions.php");

if ($output = @fopen('../includes/datas/tmpNabshare.php', 'w'))
{
   fputs($output, "<?\n");
   fputs($output, "\$Nabshare = array(\n");
   $categoriesAddr = "http://my.nabaztag.com/vl/action/myMessagesNabshare.do";
   $nabshareAddr = "http://my.nabaztag.com/vl/action/myMessagesNabshareChoice.do?langShare=1&idCateg=";
   
   $catPage = getPage($categoriesAddr, true, array("Content-Type: text/xml; charset=UTF-8","Accept-Language: fr-fr"));
   fputs($output, "\tarray(\n");
   fputs($output, "\t\t\"0\"=>\"- Tous - \"");
   
   // first, generate Categories array...
   $categoryIds = array();
   $pos = 0;
   $cpt = 1;   // '0' is "All" section, allready added...
   do
   {   
      $toFind = "myMessagesNabshareChoice.do?idCateg=";
      $pos = strpos($catPage, $toFind, $pos);
      if($pos != FALSE)
      {
            $pos += strlen($toFind);
            $end = strpos($catPage, '"', $pos);
            $catId = substr($catPage, $pos, $end - $pos);
            $pos = strpos($catPage, '>', $pos) + 1;
            $end = strpos($catPage, '<', $pos);
            $catTitle = substr($catPage, $pos, $end - $pos);   
            $catTitle = iconv("UTF-8", "", stripslashes($catTitle));
            // Strange but Violet sometimes puts strange chars... So we have to clean them...
            $catTitle = str_replace("’","'",$catTitle);
            $catTitle = str_replace("…","...",$catTitle);
            
            fputs($output, ",\n\t\t\"" . $cpt . "\"=>\"" . addslashes($catTitle) . "\"");
            print($catId . " - " . $catTitle . "<br>");
            array_push($categoryIds, $catId);
            $cpt++;         
      }
   } while ($pos != false);
   fputs($output, "\n\t)");
   
   $headers = Array(
      Array("Content-Type: text/xml; charset=UTF-8","Accept-Language: fr-fr"),
      Array("Content-Type: text/xml; charset=UTF-8","Accept-Language: en-en"),
   );
   foreach($categoryIds as $catId)
   {
      fputs($output, ",\n\tarray(\n");
      $toWrite = "";      
      for ($i=0; $i<count($headers); $i++)
      {
         $nabsharePage = getPage($nabshareAddr . $catId, true, $headers[$i]);            
         $pos = 0;
         do
         {
            $pos = strpos($nabsharePage, 'id="ID_', $pos);
            if($pos != false)
            {
               $pos += strlen('id="ID_');
               $end = strpos($nabsharePage, '"', $pos);
               $nabshareId = substr($nabsharePage, $pos, $end - $pos);
               
               $pos = strpos($nabsharePage, '>', $pos) + 1;
               $end = strpos($nabsharePage, '<', $pos);
               $nabshareTitle = Trim(substr($nabsharePage, $pos, $end - $pos));            
               $nabshareTitle = iconv("UTF-8", "", stripslashes($nabshareTitle));               
                // Strange but Violet sometimes puts strange chars... So we have to clean them...
               $nabshareTitle = str_replace("’","'",$nabshareTitle);
               $nabshareTitle = str_replace("…","...",$nabshareTitle);
               
               if ($toWrite != "")
                  $toWrite .= ",\n";
               $toWrite .= "\t\t\"" . $nabshareId . "\"=>\"" . addslashes($nabshareTitle) . "\"";
               print("&nbsp;&nbsp;&nbsp;&nbsp;" . $nabshareId . " - " . $nabshareTitle . "<br>");
            }
         } while ($pos != false);
      }
      $toWrite .= "\n\t)";
      fputs($output, $toWrite);
   }
   fputs($output, "\n);\n");
   fputs($output, "?>\n");
   fclose($output);
   unlink('../includes/datas/nabshare.php');
   rename('../includes/datas/tmpNabshare.php', '../includes/datas/nabshare.php');
}
?>

Voilà voilà, j'espère que ça sera utile à certains yellownabzsmile

_____________________________



Compagnie de reconstitution historique (essentiellement médiévale) en belgique :
Tartes et Bastons ASBL
Parsing du Nabshare... Bigpna11Parsing du Nabshare... Nabzbu11Parsing du Nabshare... BlasonParsing du Nabshare... Nabzbu11Parsing du Nabshare... Bigpna11

Parsing du Nabshare... Socadana
(Suis nouveau sur MN donc plein de mangas encore à ajouter et mes DVDs à mettre aussi yellownabzwink)
Revenir en haut Aller en bas
http://www.tartesetbastons.be
NaBoByZ
Nabazteur Courtois
Nabazteur Courtois
NaBoByZ

Localisation : Btx
Nabaztag : NaBoByZ
Nbr de messages : 4349
Carottes : 4775

Parsing du Nabshare... Empty
MessageSujet: Re: Parsing du Nabshare...   Parsing du Nabshare... Icon_minitimeVen 11 Jan 2008 - 14:12

hé beh !! affraid Je comprends rien ! Mais c'est surement utile ! Merci BigP !
Revenir en haut Aller en bas
BigPanda
Kryptonite Nabz
Kryptonite Nabz
BigPanda

Age : 37
Localisation : Bruxelles
Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3)
Nbr de messages : 7127
Carottes : 11479

Parsing du Nabshare... Empty
MessageSujet: Re: Parsing du Nabshare...   Parsing du Nabshare... Icon_minitimeVen 11 Jan 2008 - 14:20

yellownabzhappy Effectivement, ça peut être utile à certains développeurs et c'est pas étonnant que tu comprennes rien si t'es pas toi^-même développeur yellownabzwink

_____________________________



Compagnie de reconstitution historique (essentiellement médiévale) en belgique :
Tartes et Bastons ASBL
Parsing du Nabshare... Bigpna11Parsing du Nabshare... Nabzbu11Parsing du Nabshare... BlasonParsing du Nabshare... Nabzbu11Parsing du Nabshare... Bigpna11

Parsing du Nabshare... Socadana
(Suis nouveau sur MN donc plein de mangas encore à ajouter et mes DVDs à mettre aussi yellownabzwink)
Revenir en haut Aller en bas
http://www.tartesetbastons.be
Tabatha
il est cap' !!!
Tabatha

Localisation : Plat Pays
Nabaztag : Tabatha (V1) & Traci (V2)
Nbr de messages : 3718
Carottes : 5101

Parsing du Nabshare... Empty
MessageSujet: Re: Parsing du Nabshare...   Parsing du Nabshare... Icon_minitimeVen 11 Jan 2008 - 14:27

T'es pas encore chez Cotubex toi?
Revenir en haut Aller en bas
BigPanda
Kryptonite Nabz
Kryptonite Nabz
BigPanda

Age : 37
Localisation : Bruxelles
Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3)
Nbr de messages : 7127
Carottes : 11479

Parsing du Nabshare... Empty
MessageSujet: Re: Parsing du Nabshare...   Parsing du Nabshare... Icon_minitimeVen 11 Jan 2008 - 14:39

Nan, finalement ça sera pour demain après-midi Cotubex... Dois d'abord passer chez moi pour voir ce qu'il me manque comme composants exactement avant d'y passer nabzblah

_____________________________



Compagnie de reconstitution historique (essentiellement médiévale) en belgique :
Tartes et Bastons ASBL
Parsing du Nabshare... Bigpna11Parsing du Nabshare... Nabzbu11Parsing du Nabshare... BlasonParsing du Nabshare... Nabzbu11Parsing du Nabshare... Bigpna11

Parsing du Nabshare... Socadana
(Suis nouveau sur MN donc plein de mangas encore à ajouter et mes DVDs à mettre aussi yellownabzwink)
Revenir en haut Aller en bas
http://www.tartesetbastons.be
Tabatha
il est cap' !!!
Tabatha

Localisation : Plat Pays
Nabaztag : Tabatha (V1) & Traci (V2)
Nbr de messages : 3718
Carottes : 5101

Parsing du Nabshare... Empty
MessageSujet: Re: Parsing du Nabshare...   Parsing du Nabshare... Icon_minitimeVen 11 Jan 2008 - 15:15

Prends des neurones, t'en manques tjrs yellownabzhappy
Revenir en haut Aller en bas
BigPanda
Kryptonite Nabz
Kryptonite Nabz
BigPanda

Age : 37
Localisation : Bruxelles
Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3)
Nbr de messages : 7127
Carottes : 11479

Parsing du Nabshare... Empty
MessageSujet: Re: Parsing du Nabshare...   Parsing du Nabshare... Icon_minitimeLun 14 Jan 2008 - 14:16

J'ai aps acheté de Neuronnes, juste quelques résistances, condensateurs, et potentiomètres nabzblah

J'ai aps non plus acheté de tournevis triangulaire ou de tuner tv :p (ils vendent aucun des deux)...

_____________________________



Compagnie de reconstitution historique (essentiellement médiévale) en belgique :
Tartes et Bastons ASBL
Parsing du Nabshare... Bigpna11Parsing du Nabshare... Nabzbu11Parsing du Nabshare... BlasonParsing du Nabshare... Nabzbu11Parsing du Nabshare... Bigpna11

Parsing du Nabshare... Socadana
(Suis nouveau sur MN donc plein de mangas encore à ajouter et mes DVDs à mettre aussi yellownabzwink)
Revenir en haut Aller en bas
http://www.tartesetbastons.be
Contenu sponsorisé




Parsing du Nabshare... Empty
MessageSujet: Re: Parsing du Nabshare...   Parsing du Nabshare... Icon_minitime

Revenir en haut Aller en bas
 
Parsing du Nabshare...
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum des Objets Communicants et Solutions pour les Libérer... :: II. Nabaztag, Karotz, mir:ror, Dal:Dal (Violet Object Operating System) :: L'univers de Nabaztag :: Archives :: API-
Sauter vers: