Flux RSS en articles

Recopie des flux RSS en articles SPIP

Mode de fonctionnement

Ce plugin recopie les flux RSS (articles syndiqués) en articles

  • reprise du contenu du flux
  • crée l’auteur s’il est mentionné dans le flux
  • ajoute les documents distants présents dans le flux
  • dans le champs URL de l’article on indique l’adresse de l’article d’origine

Pour éviter les doublons et les imports successifs, une fois l’article créé, l’article syndiqué est rejeté (ce qui permet de suivre où en sont les recopiés).

Via cfg (configuration) il est possible de choisir :

  • le statut des articles (proposé ou publié)
  • le mode de fonctionnement :
    • automatique : tous les sites syndiqués validés sont recopiés
    • manuel : il faut sélectionner manuellement les sites syndiqués sur lequel on veut que la copie soit active
  • s’il faut être averti par e-mail à chaque flot de recopies (qui ont lieu tous les 10min)
  • s’il faut copier le logo du site comme logo d’article (facultatif car peut générer beaucoup de fichiers) (déprécié, utiliser plutôt la liaison avec la table spip_articles_syndic)

En mode automatique, pour éviter la saturation de la base, tous les articles syndiqués de plus de 2 mois sont effacés (inutile donc de cocher l’option).

Installation

Télécharger et installer comme un plugin habituel

Recommandations

Lorsque vous ajoutez un nouveau site à syndiquer :

  • bien choisir la rubrique où vous référencez le site. c’est là que les articles seront copiés
  • choisir l’option « le contenu complet des articles (au format HTML) » si vous voulez récupérer l’intégralité du contenu (et non son résumé). (Cette option est automatiquement validée si vous êtes en mode manuel)
  • ne pas oublier de valider le site (statut vert « validé »)

En terme de squelette :

  • En mode automatique, il est recommandé de ne pas utiliser la boucle SYNDIC_ARTICLES car les objets ne seront pas stables (en permanence copiés et effacés pour devenir des articles).
  • En mode manuel, vous pouvez ajouter le critère {rssarticle=non} à vos boucles SYNDIC pour ne traiter que les sites dont les articles syndiqués ne sont pas recopies

Le plugin peut créer beaucoup d’articles rapidement, il est donc conseillé d’être précis dans les flux RSS que vous soumettez.

Par exemple sur un site SPIP
au lieu de soumettre le flux général d’un site de type http://www.a-brest.net/spip.php?page=backend
Préférez un flux plus restreint, plus thématique

  • le flux d’une rubrique ex.http://www.a-brest.net/spip.php?page=backend&id_rubrique=161
  • le flux d’un mot ex. http://www.a-brest.net/spip.php?page=backend&id_mot=16

Liaison tables articles et sites

Le plugin crée une table spip_articles_syndic qui permet de lier l’article recopié et la fiche du site.

Voici par exemple une boucle qui permet d’afficher la fiche du site depuis l’article recopié :

<BOUCLE_art_principal(ARTICLES){id_article}>
...
<BOUCLE_art_origine(ARTICLES_SYNDIC){id_article}><BOUCLE_infosite(SYNDIC){id_syndic}>  
<div class="info_site">
    <h1>#NOM_SITE</h1>
    #DESCRIPTIF
    [<small>URL: <a href="#URL_SITE">(#URL_SITE)</a></small>]              
</div>
</BOUCLE_infosite></BOUCLE_art_origine>
... 
</BOUCLE_art_principal>

Historique

Version Date Descriptif
1.4.0 septembre 2023 compatible SPIP 4.2
1.3.0 janvier 2022 compatible SPIP 4.0
1.1.5 14 août 2017 compatible PHP 7.0
1.1.3 13 novembre 2014 compatible SPIP 3.1
1.1 août 2012 version bêta pour SPIP 3.0
0.5 août 2011 date de l’article est celle du flux.
Ajout d’une page pour forcer la copie manuellement
0.4 avril 2011 performance (déclaration table via pipeline)
0.3 avril 2010 choix du mode : automatique ou manuel
0.2 septembre 2009 ajout de la liaison l’article et site
0.1 juillet 2009 sortie initiale

Avertissement

Ce plugin modifie globalement le fonctionnement de la syndication. Il répond à un besoin très particulier de sites qui veulent récupérer beaucoup d’informations de flux extérieurs (RSS, ATOM) et de pouvoir les re-travailler dans le flux habituel des articles SPIP (par exemple, les déplacer, les éditer, faire le lien faire l’auteur, ajouter des mots-clés, ....) ce que ne permettent actuellement pas les articles syndiqués.

La solution basique à base de boucles et sans ce plugin
Pour les autres sites, si vous désirez simplement afficher une rubrique type revue du presse, la solution la plus simple et économique est de le réaliser sans ce plugin au simple niveau du squelette.
Par contre, vous n’aurez pas la possibilité d’éditer et d’intervenir sur les articles syndiqués (sauf les effacer) (c’est ce que permet le plugin)

Par exemple, je veux créer une rubrique regroupant les informations de 3 maisons de la culture (MJC)

  1. créer une rubrique « Actualités des maisons de la Culture »
  2. dans cette rubrique, ajouter les 3 flux RSS des sites de MJC. choisir l’option « le contenu complet des articles (au format HTML) »
  3. compléter au besoin votre squelette.

Si ma rubrique possède le numéro 34, cela donne rubrique=34.html

<BOUCLE_rub_principal(RUBRIQUES) {id_rubrique}>
<html ...>
....
<BOUCLE_articlesyndic(SYNDIC_ARTICLES)
   {id_rubrique}{pagination 10}{age<180}{par date}{inverse}>
<div class="article">
    <h1><a href="#URL_ARTICLE">[(#TITRE*)]</a></h1>
    [<div class="enclosures">(#TAGS|afficher_enclosures)</div>]
    <small>[(#DATE|affdate_court)][, <:par_auteur:> (#LESAUTEURS)]
        [ &mdash; <em>(#TAGS|afficher_tags)</em>]
    </small>
    [<div class="texte">(#DESCRIPTIF|image_reduire{500})<br class="nettoyeur" /></div>]
</div>
</BOUCLE_articlesyndic>
[<p class="pagination">(#PAGINATION)  - #GRAND_TOTAL billets</p>]
</div>
</B_articlesyndic>
...
</html>
</BOUCLE_rub_principal>

Documents images associées au flux rss

La configuration du plugin propose d’« utiliser le plugin ressource pour afficher ensuite les images.
Dans ce cas, il peut être nécessaire de définir la constante _RESSOURCE_LIBRAIRIE_SEULEMENT dans votre fichier mes_options, afin que le plugin ressource n’interfère pas avec vos contenus.

Voir Utiliser « ressource » en tant que librairie de fonction".

Astuces

La copie des articles syndiqués en articles spip se fait automatiquement par le mécanisme du cron (génie) tous les 10 minutes.

Si vous voulez forcer manuellement cette recopie, vous pouvez le faire de la page « Maintenance > Tâches de fond » et cliquer sur la tâche « rssarticle_copie »

Discussion

71 discussions

  • 8

    Salut,

    Existe t’il, pour SPIP 3.0.1 ?

    • Non, il faut porter le plugin pour SPIP 3. Les contributions sont les bienvenues.

    • Je ne me connait pas trop en PHP (mais les bases y sont) s’il existe un moyens d’aider ou bien un tuto a suivre pour porter ce plugin vers la version 3 de spip je suis preneur !

    • Je suis prêt à retrousser mes manches ... Un plan d’attaque ?

    • merci pour l’aide.

      si c’est pas déjà fait, inscrit toi sur la zone
      j’ai préparé le SVN en créeant une branche pour la version SPIP 2 et pour accueillir la version SPIP 3 dans le trunk
      http://zone.spip.org/trac/spip-zone...

      je serais d’avis de tout ré-écrire from scratch pour faire les choses proprement.
      actuellement je n’ai pas trop le temps mais n’hésite pas à commencer.

    • OK.

      Je suis vraiment débutant en programmation de plugin spip. J’ai fait ce que j’ai pu pour avoir quelque chose de fonctionnel en suivant les quelques docs glanés par ci par là sur la version 3. C’est publié dans la branche trunk.

      C’est loin d’être réécrit de zéro, car je ne connais pas assez spip et encore moins php pour ça.

      Il y a des restes de cfg qui méritent d’être virés.

      Il y a aussi des formulaires qui devraient trouver une meilleure écriture me semble t-il. Notamment, à voir pour un usage avec saisie.

      Enfin, le plus important, la partie upgrade du plugin est pas au point en l’état. Par exemple, il faudrait employer un moyen, s’il existe, de conserver la liste des sites pour lesquels on copie les flux rss en article quand rss_article est configuré en mode manuel. Là, je pense, pour mon cas personnel devoir me faire une requête sql pour m’en passer ;-)

      Très formateur cette mise à jour. Bien content d’avoir mis les mains là dedans.

    • merci beaucoup pour ce premier jet en Spip3.
      Je regarde cela sans doute dans un mois tranquillement.
      Les bases sont posées, il ne reste plus qu’à affiner :)

    • Après, si parmi ceux qui étaient intéressés, pour le portage vers SPIP3, vous pouviez dire si a priori, tout se passe bien de votre côté avec ce premier jet ... ça nous permettrai de confirmer que c’est fonctionnel.

    • Salut !

      Aprés des essaie sur le site on dirais que cela marche parfaitement !

      Visitez www.batata-dz.com toutes les news sont tirée du plugin !

      bonne journée !

    Répondre à ce message

  • Bonjour,

    Pour la phase de test ou est-ce que je peut télécharger la version test compatible spip 3 ?

    Répondre à ce message

  • Existe-t-il un projet de mise à jour du plugin « Flux RSS en articles » pour Spip3 ? J’hésite à passer en Spip 3 puisque j’utilise ce plugin pour deux de mes sites spip.

    Répondre à ce message

  • Kamran

    Waiting for new version of this plugin for SPIP 3.1

    Répondre à ce message

  • 1

    Bonjour

    Existe-t-il un moyen de mettre un article à jour quand celui-ci a été modifié sur le site source ?

    Merci

    Répondre à ce message

  • Bonjour,

    J’ai fait quelques tests avec le plugin il y a quelque mois et tout semblait fonctionner à merveille.

    Aujourd’hui j’ai essayé de nouveau, et le plugin n’importe plus les images en pièces jointes à l’article. Il laisse plutôt le code HTML qui pointe sur l’image de l’autre site.

    Y a-t-il quelque chose qui m’échappe ?

    De plus, comment faire pour importer l’article au complet plutôt que le résumé ?

    Merci

    Répondre à ce message

  • 5

    Bonjour,
    Dans le cas où l’on aurait paramétré un site référencé en mode modération à postériori, Il y a un certain temps de latence entre le moment où l’on valide un lien dans le flux RSS et où celui-ci est transformé en article. je suppose que cela est dû au traitement de cette conversion par le CRON. Mais y aurait-il un moyen de rendre une conversion immédiate si l’utilisateur le souhaite ?

    D’autre part, serait-il possible d’intégrer la librairie HTML2SPIP, utilisée dans le plugin CKEditor afin de transformer en raccourcis typographiques le code HTML qui pourrait se trouver dans le flux, surtout si celui-ci n’est pas issu d’un site en SPIP.

    Merci pour ce plugin.

    Cordialement,

    • Bonjour,

      Mais y aurait-il un moyen de rendre une conversion immédiate si l’utilisateur le souhaite ?


      Il faudrait ajouter un bouton dans la partie privée pour forcer une conversion immédiate manuelle.
      Sinon pour améliorer la gestion du CRON, le plugin job_queue est très bien

      serait-il possible d’intégrer la librairie HTML2SPIP


      Je n’ai pas testé cette librairie mais c’est une bonne idée. il faudrait sans doute l’ajouter en option dans le panneau de configuration comme option.
      Ensuite pour l’intégrer HTML2SPIP, il faudrait

      • que la librairie soit indépendante de CKEditor (via une installation dans ./lib/ ou encore via plugin indépendant que d’autres plugins pourraient partager (comme spip-bonux ou facteur par exemple)
      • cela serait bien de placer HTML2SPIP sur la zone pour que la communauté puisse y travailler.

      Si ces chantiers vous intéressent, n’hésitez donc pas à commiter. merci !

    • Merci pour ces réponses.

      En ce qui concerne HTML2SPIP, elle est bien indépendante de CKEditor et s’installe dans /lib. J’ai essayé de la tester avec votre plugin, mais avec mes piètres connaissances de PHP ce n’est pour l’instant pas très concluant. A suivre, donc.

    • Bonjour,
      J’ai trouvé comment utiliser la librairie HTML2SPIP avec Flux RSS en articles : Il faut rajouter dans /genie/rssarticle_copie.php, ligne 61 après $texte = $a['descriptif']; le code suivant :

      /* Reconversion HTML vers typo SPIP */
      require_once(find_in_path('lib/html2spip-0.6/misc_tools.php'));
      require_once(find_in_path('lib/html2spip-0.6/HTMLEngine.class'));
      require_once(find_in_path('lib/html2spip-0.6/HTML2SPIPEngine.class'));
      $parser = new HTML2SPIPEngine($GLOBALS['db_ok']['link'], _DIR_IMG);
      $parser->loggingEnable();
      $output = $parser->translate($texte);
      $texte = $output['default'];	

      Il faut bien sûr avoir au préalable installé la librairie HTML2SPIP dans /lib.

    • bonjour

      cela semble très prometteur ! Je viens de tester en local, il reste quelques soucis :

      • ajout de caractères dans le texte (problème d’encodage ou de parsing ?) sur certains blogs (notamment flux RSS issus de wordpress francophone)
      • rapatriement des images distant échouent

      Si la solution commence à être stable, je l’intégrerai en option dans le panneau de configuration du plugin.

      merci beaucoup.

    • Hello,
      Effectivement la libraire HTML2SPIP ne fonctionne correctement qu’avec des tables en UTF8. Je me suis bien arraché les cheveux avec ça, car il ne suffit pas que le contenu soit déclaré comme étant en UTF8 dans SPIP, il faut aussi que les tables de la base de données soient interclassées en UTF8 (voir également cet échange sur le forum du plugin CKEditor).

      Au sujet des problèmes d’encodage sous SPIP, je conseille la lecture de la synthèse de François Daniel Giezendanner : utf-8 : problèmes d’affichage des caractères et dysfonctionnement de la recherche .

    Répondre à ce message

  • 1

    Bonjour,
    merci pour ce plugin.

    juste deux petit choses pour la wish liste :

    -  les articles importés n’ont pas leur url d’origine attaché mais un lien via feedproxy.google.com. ça serait géniale de pouvoir choisir entre garder l’url d’origine et celui via google dans le config.

    -  le ’nom du site’ du site syndiqué n’est pas importé dans le champs ’lien hypertexte/titre’ de l’article. un petit détail qui serai chouette d’avoir

    si non tout a l’air de très bien fonctionner. quel chouette outil :)
    joz

    Répondre à ce message

  • cedric konan

    Bjr la communauté. j’ai téléchargé le plugin mais je sais pas vraiment l’utiliser. j’ai lu l’article et c’est pareil. je veux integrer ds mon site des articles concernant les automobiles recupéré grace au flux rss.et au clic on puisse avoir l’article complet ds mon un peu comme le slide de yahoo fait. je suis novice en programmation web je sollicite votre aide.

    Répondre à ce message

  • 1
    Reunig Kozh

    Salut

    Si je veux conserver un affichage de tous les derniers articles syndiqués, dois-je doubler les sites dans « les sites référencés » : un pour le plugin et un autre pour l’affichage dans ma colonne « Sur le web » (en bas à droite)
    http://www.cornouaille-ecologie.eu/
    Merci de votre aide
    René

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom