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

  • Plugin super avec, comme toujours, deux ou trois bricoles à travailler...

    J’utilise le plugin un peu à « l’envers »... Plutôt que d’alimenter « mon » site avec des flux RSS venant d’autres sites, je mets en place un site qui doit en alimenter un tas d’autres qui utiliseraient le plugin... Grosso modo, il s’agit d’écrire régulièrement des articles (dépêches) qui seraient répercutés automatiquement sur ces sites.

    Le seul souci que j’ai, c’est que ces articles ont souvent des notes et des références sous forme de liens (du style référence->http://site_de_reference)... Mais du coup, sur le site qui reçoit le flux, ces liens deviennent monsite.org/« http:/www.site_de_reference.html » ce qui aboutit, bien sur, sur un « Not Found »...

    J’ai fait une fausse manip ou y’a-t-il une solution ?

    Merci d’avance...

    Répondre à ce message

  • 1
    Cédric J

    Bonjour,

    Après installation du plugin (version 1.1.2) sur SPIP 3.0.17, j’ai le message d’erreur suivant à la place de la page de configuration : « Fichier configurer_rssarticle introuvable ».

    Effectivement, dans le répertoire « /exec/ » du plugin, il n’y a pas de fichier « configurer_rssarticle.php », uniquement le fichier « rss_article.php ».

    Quelqu’un a une piste ?

    Merci d’avance.

    • Cédric J

      Je me répond à moi-même, il ne fallait pas aller chercher bien loin ...
      Le transfert FTP du fichier « /prive/squelettes/contenu/configurer_rssarticle.html » avait échoué.
      En le ré-uploadant, ça fonctionne mieux ! ;-)

    Répondre à ce message

  • 1
    Gil Drouville

    Suite au passage à Spip 3.0.16, les flux sont bien visibles en partie privés, mais ne me créer pas d’article dans la partie publique.
    Une idée ?

    • Salut !

      Je l’utilise sans souci avec un SPIP 3.0.16. Quelle était ta version précédente de SPIP ? Qu’elle est ta version actuelle du plugin ?

      As-tu vérifier la présence de la tâche « rssarticle_copie » en te rendant sur la page « ecrire/ ?exec=job_queue » ?

       À plus.

      Ludo

    Répondre à ce message

  • minicircul

    BUG SUR LA MISE À JOUR LORS DE SOURCES.

    Bonjour,

    Que ce soit sous la version SPIP 3.0.15 ou 16, je suis confronté au problème suivant :
    -  Les articles créés via le flux RSS sont correctement importés
    -  lors du rafraichissment (je suppose), les articles en vert passent en bloqué automatiquement alors que le flux RSS source n’a pas été modifié.

    j’avais déjà remarqué un pbm de rafraichissement à la sortie de la nuit (articles passant de publiés à bloqués) j’effaçais alors l’ensemble de la liste et forçais un rafraichissement pour relancer le système.

    Si quelqu’un a une piste, je suis preneur !

    Répondre à ce message

  • 1

    Bonjour,
    merci pour ce super plugin bien pratique, dont je me sers avec docker pour importer les docs distants des flux.

    J’ai modifié la ligne 52 de genie/rssarticle_copie.php car j’avais des articles syndiqués avec le même titre, de manière à repérer plutot les articles ayant la même url :

    $url =  $a['url'];
     // article avec mm titre existe ? (test doublons sur l'url plutot que sr le titre)
    	        if (!$row = sql_fetsel("id_article","spip_articles","url=".sql_quote($url))) {  

    Répondre à ce message

  • Bonjour,

    Une évolution/fonctionnalité qui serait vraiment très utile serait de pouvoir choisir le statut par défaut des articles importés (proposé/publié) par flux et non seulement sur l’ensemble du plugin.

    Certains flux référencés sont intégralement pertinents, alors que d’autres nécessitent parfois un filtrage manuel des articles.

    Qu’en pensez-vous ?

    Serait-ce facilement réalisable ?

    bonne journée

    Répondre à ce message

  • 4

    Bonjour,

    « 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). »

    Et si on veut passer ce délai de 2 mois à 1 mois ou 15 jours, quand ce sont des flux RSS très actifs qui sont syndiqués, pour ne pas avoir une base de données qui augmente trop vite en taille ?

    Est-ce possible ? Si oui, il faut faire la modification uniquement et directement dans spip ? Ou aussi dans le plugin ? Et dans quel fichier ?

    Par avance merci,
    Léo

    • Dans le même état d’esprit :

      Est-ce qu’en intervenant directement dans la Base de Données avec une requête du type :

      DELETE FROM spip_syndic_articles WHERE date < ’2012-10-15 10:00:00’

      pour ne garder que les articles syndiqués depuis les 15 derniers jours, on peut vider la base/table
      sans provoquer une nouvelle syndication de tous les articles antérieurs, avec dans la foulée une recopie de tous ces articles antérieurs en articles proposés en partie privée de spip ?

      Léo

    • le nettoyage automatiquement se fait via le génie (uniquement dans le mode auto)

      genie/rss_article.php

      	// maintenance generale
        // mode auto: on efface les syndic_articles de plus de 2 mois pour soulager le systeme (cf genie/syndic) 
        // attention: on efface sur l'ensemble des sites syndiques ss tenir compte de l'option		
      	if ($mode_auto) sql_delete('spip_syndic_articles', "maj < DATE_SUB(NOW(), INTERVAL 2 MONTH) AND date < DATE_SUB(NOW(), INTERVAL 2 MONTH)");

      A priori c’est inutile de changer cette date, 2 mois de syndication ce n’est pas énorme non ?

    • Bonjour,

      Merci d’abord pour ce plugin.

      Le problème n’est pas tant au niveau de la date que de la quantité d’articles stockés dans la base de données au fil des jours. Quantité d’articles qui elle est fonction de la date....
      Idéalement, il faudrait pouvoir gérer les deux, mais comme c’est pour un site qui « trie » de l’info sur environ 200 sites assez ou très actifs, jouer sur la date doit pouvoir suffire... pour l’instant ...

      C’est le mode manuel et non pas automatique qui est utilisé pour sélectionner les sites syndiqués gérés par le plugin. Donc apparemment pas d’effacement automatique au bout de deux mois ?
      Certains sites syndiqués par le site ne sont pas utilisés par le plugin.

      Ai-je rater une étape de la configuration du plugin ?

      L’intérêt du plugin, dans cette utilisation, est de pouvoir « trier » l’information.....

      200 sites gérés par le plugin, 4200 articles en une semaine pour un BD de 16 Mo, pour de petites ressources machine et une bande passante minimum aussi...

      Léo

    • Bonjour,

      Dans le même état d’esprit : maîtriser la taille de la base de données, entre autres .. .
      Est-il possible de mettre une condition dans genie/rss_article.php pour limiter
      les copies aux articles syndiqués les plus récents....? Un mois , 15 jours ...

      la raison : quand je supprime des articles syndiqués de plus de deux mois, pour certains sites pas très actifs, la syndication reprend ces vieux articles vieux parfois de plus de 6 mois et les copie pour les proposer . Cerise sur le gâteau, il y a des notifications qui partent vers les administrateurs...Donc quand on supprime 1000 articles , celà fait beaucoup de cerises potentielles à (re)venir.....

      Léo

    Répondre à ce message

  • 1

    Bonjour tout le monde,
    J’utilise ce plugin mais j’aimerai savoir si c’est normal que les chapo des articles ne soient pas importé ?? Merci

    • bonjour,

      Par défaut, les flux RSS ne contiennent de distinctions de texte, chapeau, ... Il y a juste un contenu principal en format HTML (balise item du fichier XML).

      Le plugin recopie tout ce contenu dans le texte de l’article. c’est donc normal d’avoir des chapeaux vides dans vos articles importés.
      Toutefois si le chapeau figure dans la balise item du flux RSS, il sera recopié dans le texte.

      Dans le cas des flux RSS fournis par défaut dans SPIP, le flux fournit des classes rss_chapo_rss_texte, rss_ps. qui permettraient de distinguer les champs et de le répartir au bon endroit au moment de la recopie. Il faudrait donc programmer en plus cette subtilité

    Répondre à ce message

  • Ça c’est intéressant ++ MERCI !!
    Je cherche un plugin qui ferait la même chose à partir de mails ...
    Ça eu existé auparavant mais non suivi
    C’est possible ?
    C’est compliqué à développer ?

    Répondre à ce message

  • 8

    Bonjour,

    Dans spip 3 le plugin s’affiche deux fois en actif dans la partie privé !?

    squirrel :)

    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