Partage
  • Partager sur Facebook
  • Partager sur Twitter

Parser vos flux RSS et flux ATOM (php)

Un parser léger (environ 10Ko pour le moment)

    11 juillet 2012 à 19:05:10

    Image utilisateur
    Yop! Je m'appelle Maxime, je suis lycéen et depuis tout petit, je touche à l'informatique. J'ai grandi avec et c'est devenu un passion pour moi. A ce jour, je développe en PHP pour le web et C++ (un peu de C et j'aimerai bien me lancer en Java et Python mais il me faudrait du temps !) pour le coté logiciel. D'ailleurs pour le C++, j'utilise wxWidgets pour les fenêtres que je trouve moins lourd que Qt mais le sujet n'est pas là ! Effectivement, aujourd'hui je suis là pour vous présenter mon dernier projet : SyndExport réalisé en PHP5 avec SimpleXML.

    Commencement


    Pour un projet que je n'ai pas encore abouti (que je compte vous présenter bientôt :D ), j'ai besoin d'un parser de flux afin de créer un lecteur d'actualités. Il me fallait quelque chose de léger et si c'était possible, quelque chose fait maison.

    L'originalité


    Mon projet n'est pas original (enfin il n'en existe que très peu) néanmoins, les autres parsers que j'ai pu voir, étaient trop lourds pour mes besoins et je partage le mien car il peut toujours servir à quelqu'un.

    Le projet


    SyndExport est une classe PHP qui me permet de parser des flux RSS ou ATOM pour les exporter en tableau PHP ou en JSON afin de pouvoir créer mon lecteur d'actus ! Voici les fonctions actuelles de SyndExport :
    • Détecter s'il s'agit d'un flux RSS ou ATOM
    • Retourner les informations du flux : titre, description, auteur, dernières modifs etc
    • Retourner le nombre d'entrées contenues dans le flux
    • Retourner les entrées contenues dans le flux avec possibilité de donner un maximum d'entrées à retourner
    • Enclosure : permet de retourner le media attaché à l'article
    • Obtenir une information que la classe ne retourne aps par défaut

    En cours :
    • Gestion minimale des namespaces.
    • Plus de balises à retourner automatiquement, je recherche celles qui sont le plus utilisées.


    Son export en JSON permet en plus d'agir directement avec des objets javascript. Et il est très simple d'utilisation :
    <?php
    $xml = file_get_contents("rss.xml");
    $flux = new SyndExport($xml);
    $infos = $flux->exportInfos();
    $items = $flux->exportItems("json");
    ?>
    

    Ce code va retourner les informations du flux dans le tableau $infos et retourner dans la variable $items les entrées du flux en JSON pour l'exploiter avec de l'ajax par exemple :)


    Comme beaucoup de webmaster créent leur flux un peu n'importe comment (comme celui du sdz :-° ) il se peut que des infos soient introuvables par le parser, normal j'utilise les spécifications RSS 2.0 et ATOM mais je vais ajouter les balises "hors normes" les plus utilisées bientôt.

    Voilà ;) ! Pour en savoir un peu plus, le télécharger ou voir des exemples de codes c'est ici
    PHP SyndExport : classe PHP pour parser des flux ATOM et RSS
    • Partager sur Facebook
    • Partager sur Twitter
      11 juillet 2012 à 19:37:26

      Ouais. Bon, pas mal, mais je préfère toujours naviguer mon flux en orienté objet qu'avec un array, faudrait que tu le gères plus comme ça, et une fonction recherche serait pas du luxe, parce que là, c'est que du sucre pour parser un fichier RSS/Atom, et ça apporte pas grand chose (si ce n'est plus de temps d'exécution pour récupérer un élément précis). Et aussi, quid des namespaces, surtout quand le contenu de ta news c'est du (x)HTML (cf. RFC 4287) ? Il manque des trucs pour en faire une vraie lib quand même.

      Ah, BTW, dire "spécification RSS" n'a aucun sens, RSS n'est pas normé.
      • Partager sur Facebook
      • Partager sur Twitter
      Koinko.in, le raccourcisseur d'URL qu'il est bien - Zingwai vaincra.
        11 juillet 2012 à 20:08:58

        Pour l'orienté objet pourquoi pas, mais mon but était de pouvoir récupérer les infos et les entrées en array ou json donc c'est à voir si j'ajoute ça. :)

        Pour les namespaces c'est justement en cours et c'est aussi pour ça qu'actuellement tu ne peux pas récupérer le contenu de la news.

        Spec RSS -> je me suis servi de ça http://www.rssboard.org/rss-specification, rss n'est pas normé c'est justement pour ça que c'est un peu le merdier.
        • Partager sur Facebook
        • Partager sur Twitter
          15 juillet 2012 à 19:00:32

          voilà j'ai fait quelques améliorations comme la possibilité d'extraire une information que je ne fais pas par défaut. De plus les medias peuvent maintenant être extraits aussi mais dans la limite d'un par article.

          Je m'attaque maintenant aux namespaces (mais ce sera sans doute limité car c'est pas ce que je recherche à faire).
          • Partager sur Facebook
          • Partager sur Twitter
            4 août 2012 à 22:25:57

            Up !

            j'ai terminé la gestion des namespaces :) je met ça en ligne quand j'aurais terminé de corriger quelques trucs et que j'aurais réécris une partie de la doc (Documentation syndexport)
            • Partager sur Facebook
            • Partager sur Twitter
              7 août 2012 à 22:12:44

              Up !

              Vous pouvez tester le lecteur de flux fait avec SyndExport ici :
              http://www.milletmaxime.net/syndexport/exemples.php
              • Partager sur Facebook
              • Partager sur Twitter

              Parser vos flux RSS et flux ATOM (php)

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown