developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 14 years ago

Closed 9 years ago

#23 closed task (fixed)

classe lecture d’un rss/atom distant

Reported by: laurentj Owned by: FlorianLB
Priority: high Milestone: Jelix 1.4
Component: jelix:utils Version:
Severity: major Keywords:
Cc: Blocked By:
Blocking: Documentation needed: no
Hosting Provider: Php version:

Description

Intégration d'une classe de lecture d'un flux rss/atom distant. Elle utiliserait entre autre la classe http qu'il est prévu d'intégrer, voir ticket #7 .

Attachments (3)

jAtom10Reader.class.php (3.5 KB) - added by bluemage 11 years ago.
jAtom10Reader
jFeedReader.class.php (963 bytes) - added by bluemage 11 years ago.
jFeedReader
jRSS20Reader.class.php (4.3 KB) - added by bluemage 11 years ago.
jRSS20Reader

Download all attachments as: .zip

Change History (21)

comment:1 Changed 14 years ago by laurentj

Pour que ce soit encore plus pratique, il faudrait que cette classe renvoi le contenu sous forme d'objets jRSS20Info, jRSSItem etc... Il faudra donc retirer ces classes des fichier jResponseRss20 &cie

comment:2 Changed 13 years ago by laurentj

  • Milestone changed from Jelix 1.0beta2 to Jelix 1.0beta3

comment:3 Changed 13 years ago by laurentj

  • Milestone changed from Jelix 1.0beta3 to Jelix 1.1

comment:4 Changed 13 years ago by laurentj

  • Milestone changed from Jelix 1.1 to Jelix 1.2
  • Priority changed from normal to high

comment:5 Changed 13 years ago by estee

Pour infos cette clase est peut être intéressante.

clearbricks/net.http.feed/class.feed.reader.php

et

clearbricks/net.http.feed/class.feed.parser.php

comment:6 Changed 13 years ago by laurentj

Je n'ai pas l'impression que ces classes supportent complètement les formats rss et atom 1.0 (à vérifier). De plus, j'aimerai plutôt une classe qui renvoi les données sous forme d'objets jRSS20Info, jRSSItem etc.. (cf dans jResponseRss20...).

Il faudrait donc une classe qui utilise jHttp pour lire le contenu, parse le contenu et mette les données directement dans des objets des classes déjà utilisées par jResponseRss20 et jResponseAtom10.

comment:7 Changed 12 years ago by Torgan

  • Documentation needed unset

Ok, alors en attendant mieux, et parce que j'en ai besoin parce que Magpie est une catastrophe au niveau de la gestion des encodages avec son parser xml php4 d'un autre age, voici la classe que j'ai rajouté au jelix chez Over-blog, utilisant les deux fichiers clearbricks sus-nommés. Après j'ignore si la solution sera retenue, mais je dois avouer que ça marche super bien pour un minimum d'investissement :

<?php
/**
* @package     jelix
* @subpackage  utils
* @author      Yannick Le Guédart
* @contributor 
* @copyright   2008 Laurent Jouanneau
* @link        http://www.jelix.org
* @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
*/

require(LIB_PATH.'clearbricks/net/class.net.socket.php');
require(LIB_PATH.'clearbricks/net.http/class.net.http.php');
require(LIB_PATH.'clearbricks/net.http.feed/class.feed.parser.php');
require(LIB_PATH.'clearbricks/net.http.feed/class.feed.reader.php');

/**
 * To send http request
 * @package    jelix
 * @subpackage utils
 * @see netHttp
 */
class jFeedReader extends feedReader 
{
}

voila

comment:8 Changed 11 years ago by foxmask

status "review?" oublié ?

comment:9 Changed 11 years ago by foxmask

je me suis inspire de cette classe mais il faut changer 2 lignes dans la classe du reader la ligne 206 :

jFile::createDir(dirname($cached_file),true);

au lieu de

files::makeDir(dirname($cached_file),true);

et ligne 215 mise en commentaire

comment:10 Changed 11 years ago by foxmask

testé avec : rss 2 : ok atom 1 : ok

comment:11 Changed 11 years ago by laurentj

non. pas de review, car ça ne répond pas à la manière dont je voudrais que cela soit. cf la description et mon premier commentaire.

Si on pouvait avoir une api uniforme ou plutot une structure de donnée uniforme, pour la lecture et la génération, ça serait bien mieux je pense.

comment:12 Changed 11 years ago by laurentj

  • Milestone Jelix 1.2 deleted

comment:13 Changed 11 years ago by bluemage

Je viens de travailler sur ce ticket et je pense avoir trouvé une solution en utilisant les classes de jelix déjà existante (jRSSItems, jRSS20Info, Jatom10Items, jAtom10Info).

Cette solution tient dans 3 fichiers et voila comment l'utiliser. Pour l'instant, mettre les classes dans le répertoire classes/ d'un de vos modules.

pour RSS:

jClasses::inc('jRSS20Reader');
$reader = new jRSS20Reader("url");
$infos = $reader->getInfos();
$items = $reader->getItems();

pour Atom:

jClasses::inc('jAtom10Reader');
$reader = new jAtom10Reader("url");
$infos = $reader->getInfos();
$items = $reader->getItems();

Changed 11 years ago by bluemage

jAtom10Reader

Changed 11 years ago by bluemage

jFeedReader

Changed 11 years ago by bluemage

jRSS20Reader

comment:14 Changed 11 years ago by bballizlife

  • review set to review?

comment:15 Changed 11 years ago by laurentj

  • review changed from review? to review-

Désolé pour le retard de cette review.

Il reste encore pas mal de boulot bien qu'on aille dans la bonne direction :-) Déjà, ce serait bien de proposer un vrai patch. Qui devra contenir les modifications suivantes :

  • les nouveaux fichiers sont à mettre dans lib/jelix/utils
  • bouger les classes jXMLFeedInfo, jXMLFeedItem, jRSS20Info, jRSS20Item, jAtom10Info dans lib/jelix/utils/
  • ce serait bien que ces classes *info et *item contiennent une méthode setFromXML($xmlElement), qui renseignerait les propriétés à partir d'un noeud simple_xml_element. cela allégerait les classes *reader, tout en offrant plus de généricité
  • dans les readers, il faut gérer les éventuelles erreurs de jHttp et de simplexml_load_string (il arrive souvent que les fils rss/atom ne soient pas valides en XML)
  • dans les setFromXML (actuellement analyzeInfo, analyzeItems), il n'y a aucune verification si les informations que l'on récupère existent ou pas. que se passe-t-il actuellement ? des warnings ? des notices ? Il faut gérer ces cas.
  • dans jFeedReader, il manque la déclaration des méthodes abstraites analyzeInfo et analyzeItems

comment:16 Changed 9 years ago by laurentj

  • review review- deleted
  • Status changed from new to confirmed

comment:17 Changed 9 years ago by FlorianLB

  • Owner set to FlorianLB
  • Status changed from confirmed to assigned

comment:18 Changed 9 years ago by laurentj

  • Milestone set to Jelix 1.4
  • Resolution set to fixed
  • Status changed from assigned to closed
Note: See TracTickets for help on using tickets.