Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[PHP] Comment extraire les tags XML itunes?

  pingoodandy, le dimanche 22 juillet 2007 à 21:04:37
Bonjour à tous!

J'essaye depuis un bout de temps de transformer mon lecteur rss en php pour qu'il puisse donner un lien vers un vidéo grâce à un flux xml compatible itunes.

Voici le code initial :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<?php
/////////////////////////////////////////////////////////////////////////////////
// PHPRSSReader.php - d'aprs HTML Reader par  Jorge Solis
// traduit et simplifi par Pierre Rouarch pour tenir en un fichier
////////////////////////////////////////////////////////////////////////////////

class xml {
 var $parser;
 function parse($xmlstring){
  $this->parser = xml_parser_create();
  xml_set_object($this->parser, $this);
  xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
  xml_set_element_handler($this->parser, "tag_open", "tag_close");
  xml_set_character_data_handler($this->parser, "cdata");

  // Initialisation
        $this->node_stack = array();
        $this->tag_open(null, "root", array());

        xml_parse($this->parser, $xmlstring);
        xml_parser_free($this->parser);

        $rnode = array_pop($this->node_stack);
 
        return($rnode);
 }

 function tag_open($parser, $tag, $attributes){
        // creation d'un nouveau node...
        $node = array();
        $node["_NAME"]      = $tag;
        foreach ($attributes as $key => $value) {
            $node[$key] = $value;
        }
        $node["_DATA"]      = "";
        $node["_ELEMENTS"]  = array();

        // ajouter le nouveau node  la fin de la pile de node
        array_push($this->node_stack, $node);  
 }

 function cdata($parser, $cdata){
  // ajouter les donnes au dernier node de la pile
        $lastnode = count($this->node_stack);
        $this->node_stack[$lastnode-1]["_DATA"] .= $cdata;
 }

 function tag_close($parser, $tag){
  // suppression de la pile
        $node = array_pop($this->node_stack);
        $node["_DATA"] = trim($node["_DATA"]);

        // and ajout comme lment  la fin de la pile...
        $lastnode = count($this->node_stack);
        array_push($this->node_stack[$lastnode-1]["_ELEMENTS"], $node);
 }
} // end of class xml

 

// recupration de l' adresse du RSS avec le paramtre rssurl
$rssurl = $HTTP_GET_VARS["rssurl"];
//////////////////////////////////////////////////////////////////////////////////////////////////
//Modifiez ici pour mettre l'adresse URL de votre RSS au cas ou aucun argument n'est pass:
// exemple :
// http://www.votresite.com/votrefichierrss' target='_blank' rel='nofollow'>http://www.votresite.com/...
/////////////////////////////////////////////////////////////////////////////////////////////
if (!$rssurl ) $rssurl = "http://www.fakesite.com/rss/rss.xml";

// rcupration du fichier par paquets de 4096
  $fp = fopen($rssurl, "r");
  while (!feof ($fp)) $data .= fgets($fp, 4096);
  fclose ($fp);
  $initPos = strpos($data, "<channel>"); // Saut de l'entte

 //parse les donnes
 
 $xml_parser = new xml();
 $data = substr($data, $initPos);
 $root_node = $xml_parser->parse($data);
 $channel    = array_shift($root_node["_ELEMENTS"]);

 //Rcupration  de certaines donnes du RSS (Voir les specifications rss 0.91, 0.92 et  2.0)
 ////// Rcupration entte de channel  /////////////////////////////////////////////////////////
 foreach ($channel["_ELEMENTS"] as $item){ 
// suppression des antislashs
 if($item[_NAME]=="title") $base_name=stripslashes($item[_DATA]);
 if($item[_NAME]=="link") $base_url=stripslashes($item[_DATA]);
 if($item[_NAME]=="description") $base_desc=stripslashes($item[_DATA]);
 
}
  $base = "<b>Web: </b><a href=\"$base_url\" target=\"_new\">$base_name</a><br>$base_desc<br>";
 /////////////////////////////////////////////////////////////////////////
 ////////// Rcupration de chaque Item  --> titre, adresse url, date de publication, description //////////////////////////////////////////////////////
 foreach ($channel["_ELEMENTS"] as $item){
 
 if($item[_NAME]=="item") {
  // suppression des antislashs  
  foreach ($item["_ELEMENTS"] as $tag){
    if($tag["_NAME"]=="title") $news_title=stripslashes($tag[_DATA]);
    if($tag["_NAME"]=="link") $news_url=stripslashes($tag[_DATA]);
    if($tag["_NAME"]=="pubDate") $news_pubDate=stripslashes($tag[_DATA]);
    if($tag["_NAME"]=="description") $news_desc=stripslashes($tag[_DATA]);
	if($tag["_NAME"]=="itunes:duration") $news_duration=stripslashes($tag[_DATA]);
	
	
  }

	
  $news .= "<p>$news_pubDate<br><b>$news_title</b><br>$news_desc<br>$news_duration[0]<br><a href=\"$news_url\" target=\"_new\">$news_url</a><hr></p>";  
 }
 }
 ////////////////////////////////////////////////////////////////////////////////
?>
<html>
<head>
<title>Sample RSS Reader in PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

 

<?php print($news) ?>
<?php print($base) ?>

</body>
</html>


1- J'ai réussi à ajouter la durée en ajoutant dans le code :
if($tag["_NAME"]=="itunes:duration") $news_duration=stripslashes($tag[_DATA]);


2- Mais comment puis-je extraire l'adresse de ma vidéo qui se présente de cette façon dans mon fichier xml :
<enclosure url="http://www.cible.com/lavideo-ipod.mp4" length="29689117" type="video/mp4" />


3- La vidéo en question existe aussi en plusieurs formats et-il possible d'ajouté un lien vers les différents formats disponibles en modifiant le lien initial de cette façon :

www.cible.com/lavideo-ipod.mp4 en www.cible.com/lavideo-windows.wmv


Un GRAND merci à vous!
Configuration: Windows XP
Firefox 2.0.0.5
Répondre à pingoodandy  Signaler ce message aux modérateurs

Résultats pour [PHP] Comment extraire les tags XML itunes?

[Recherche Software] pour divers langages (Résolu) Hello, Je cherche un bon soft pour programmer avec plusieurs langages (php, JavaScript, Python, XML, XSLT). J'ai essayé devPHP et éclipse, mais je suis pas vraiment satisfait de ce dernier car on est obligé de créer un Workspace avec tout... www.commentcamarche.net/forum/affich-2341184-recherche-software-pour-divers-langages
PHP - Parser du XML Introduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de... www.commentcamarche.net/contents/php/phpxml.php3
PHP - Extraire chaine - délimiteur (Résolu) Bonjour, Ma question est la suivante , je suis extraire une partie d'une chaine de caractère par exemple $chaine = "images/monimage.jpg" Je souhaiterais récupérer la partie qui suit le délimiteur / pour obtenir "monimage.jpg" Je suppose... www.commentcamarche.net/forum/affich-4028716-php-extraire-chaine-delimiteur

Résultats pour [PHP] Comment extraire les tags XML itunes?

[PHP] Parse error, unexpected T_STRING, expecting ',' or ';'Cette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple : www.commentcamarche.net/faq/sujet-869-php-parse-error-unexpected-t-string-expecting-or

Résultats pour [PHP] Comment extraire les tags XML itunes?

[php Debian] parseur xml (Résolu)Bonjour, j'ai un serveur apache avec php et mysql d'installer sous debian. Je viens d'apprendre que j'ai besoin de bosser en xml sur ce meme serveur. Y a -t- il un moyen de l'installer simplement ? je suis débutante en linux... www.commentcamarche.net/forum/affich-3086209-php-debian-parseur-xml
PHP -- Extraire du code html d'une page (Résolu)Bonjour, Objet : certaines pages html proposent des profils d'utilisateurs dynamiques. Par exemple sur la page dédiée à un utilisateur de Deezer (site de diffusion de musique), on verra la musique qu'il écoute à l'instant.... www.commentcamarche.net/forum/affich-7321678-php-extraire-du-code-html-d-une-page
PHP et XML (Résolu)Bonjour j'aimerai bien savoir SVP est ce qu'on a la possibilté d'inclure un code PHP au sein d'une page XML . Merçi en avance aux gens qui veulent m'aider. www.commentcamarche.net/forum/affich-1923554-php-et-xml

Résultats pour [PHP] Comment extraire les tags XML itunes?

Télécharger Notepad++Notepad + + est un éditeur de code source, qui supporte plusieurs langages de programmation: Ce projet, fondé sur la composante Scintilla (un très puissant éditeur de composant), écrit en C + + pur avec win32 api et STL (qui assure la plus grande... www.commentcamarche.net/telecharger/telecharger-34055333-notepad
Télécharger MusicMatch JukeboxMusicmatch Jukebox (désormais Yahoo Music Jukebox) est un logiciel tout-en-un permettant : d'extraire les pistes d'un CD audio, de convertir des fichiers vers le format MP3, d'éditer les tags (ID3tags) de vos morceaux, d'écouter des... www.commentcamarche.net/telecharger/telecharger-34055181-musicmatch-jukebox
Télécharger DbPowerAmpdBpoweramp Music Converter™ (DMC), appelé 'couteau suisse audio', permet : de ripper les CD audio, c'est-à-dire d'en extraire les pistes sous forme de fichier (MP3, WAV) de convertir les formats audio en conservant les ID3 tags, une... www.commentcamarche.net/telecharger/telecharger-34055079-dbpoweramp

Résultats pour [PHP] Comment extraire les tags XML itunes?

Introduction à XMLPrésentation de XML XML (entendez eXtensible Markup Language et traduisez Langage à balises étendu, ou Langage à balises extensible) est en quelque sorte un langage HTML amélioré permettant de définir de nouvelles balises. Il s'agit effectivement... www.commentcamarche.net/contents/xml/xmlintro.php3
DOM (Document Object Model) et SAX (Simple API for XML)XML permet de définir la structure du document uniquement, ce qui permet d'une part de pouvoir définir séparément la présentation de ce document, d'autre part d'être capable de récupérer les données présentes dans le document pour les... www.commentcamarche.net/contents/xml/xmldomsax.php3
Structure d'un document XMLQu'est-ce que le XML? La norme XML en tant que telle doit être vue comme un outil permettant de définir un langage (on dit alors qu'il s'agit d'un métalangage), permettant de créer des documents structurés à l'aide de balises. Une balise est une... www.commentcamarche.net/contents/xml/xmlstruc.php3