|
| Parsing du Nabshare... | |
| | Auteur | Message |
---|
BigPanda Kryptonite Nabz
Age : 42 Localisation : Bruxelles Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3) Nbr de messages : 7127 Carottes : 13344
| Sujet: Parsing du Nabshare... Ven 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 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(" " . $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 _____________________________ Compagnie de reconstitution historique (essentiellement médiévale) en belgique : Tartes et Bastons ASBL (Suis nouveau sur MN donc plein de mangas encore à ajouter et mes DVDs à mettre aussi ) | |
| | | NaBoByZ Nabazteur Courtois
Localisation : Btx Nabaztag : NaBoByZ Nbr de messages : 4349 Carottes : 6640
| Sujet: Re: Parsing du Nabshare... Ven 11 Jan 2008 - 14:12 | |
| hé beh !! Je comprends rien ! Mais c'est surement utile ! Merci BigP ! | |
| | | BigPanda Kryptonite Nabz
Age : 42 Localisation : Bruxelles Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3) Nbr de messages : 7127 Carottes : 13344
| | | | Tabatha il est cap' !!!
Localisation : Plat Pays Nabaztag : Tabatha (V1) & Traci (V2) Nbr de messages : 3718 Carottes : 6966
| Sujet: Re: Parsing du Nabshare... Ven 11 Jan 2008 - 14:27 | |
| T'es pas encore chez Cotubex toi? | |
| | | BigPanda Kryptonite Nabz
Age : 42 Localisation : Bruxelles Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3) Nbr de messages : 7127 Carottes : 13344
| Sujet: Re: Parsing du Nabshare... Ven 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 _____________________________ Compagnie de reconstitution historique (essentiellement médiévale) en belgique : Tartes et Bastons ASBL (Suis nouveau sur MN donc plein de mangas encore à ajouter et mes DVDs à mettre aussi ) | |
| | | Tabatha il est cap' !!!
Localisation : Plat Pays Nabaztag : Tabatha (V1) & Traci (V2) Nbr de messages : 3718 Carottes : 6966
| Sujet: Re: Parsing du Nabshare... Ven 11 Jan 2008 - 15:15 | |
| Prends des neurones, t'en manques tjrs | |
| | | BigPanda Kryptonite Nabz
Age : 42 Localisation : Bruxelles Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3) Nbr de messages : 7127 Carottes : 13344
| Sujet: Re: Parsing du Nabshare... Lun 14 Jan 2008 - 14:16 | |
| J'ai aps acheté de Neuronnes, juste quelques résistances, condensateurs, et potentiomètres 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 (Suis nouveau sur MN donc plein de mangas encore à ajouter et mes DVDs à mettre aussi ) | |
| | | Contenu sponsorisé
| Sujet: Re: Parsing du Nabshare... | |
| |
| | | | Parsing du Nabshare... | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |