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

  • 1

    Bonjour erational, concernant ton plugin je le trouve très bien mais quelques choses pourraient être amélioré.

    Je suis sous spip 2.010

    Le lien renvoyant vers l’article fournit par le rss devrait être enregistré dans le champ « url_article » de la table « spip_article » ainsi que le titre du site si possible dans le champ « nom_site ».

    Je trouve qu’il serait judicieux de créer un logo d’article à la place de la première image jointe à l’article fournit par le rss.

    // creation de l’article
    $id_article = sql_insertq( ’spip_articles’, array(
    ’titre’=>$titre, ’id_rubrique’=>$id_rubrique,
    ’texte’=>$texte, ’statut’=>$import_statut, ’id_secteur’=>$id_secteur,
    ’date’=> $lsDate, ’accepter_forum’=>’oui’, ’lang’=>$lang, ’url_site’=>$url)) ;

    Voila bonne continuation je l’utilise déjà dans le développement de mon site : http://dom97.com

    • merci pour la suggestion
      j’ai supprimé l’option « citer la source » pour intégrer systematiquement l’URL d’origine dans le champs URL de l’objet article

    Répondre à ce message

  • 3

    Excellent plugin, merci pour son développement.
    Il me semble toutefois comme certains autres ici qu’il serait vraiment bien d’une part d’ajouter la possibilité de ne pas convertir en article certains flux, mais aussi de pouvoir gérer le temps avant que le script n’efface les articles (actuellement 2 mois).
    A ce sujet une question a été posée et me semble fondamentale, je n’y ai pas vu de réponse alors je la repose : Est-ce que les articles « normaux », n’étant pas passé par la moulinette du plugin, sont aussi effacés après les deux mois ?
    Si oui, c’est vraiment dommage et ça remet en cause une partie du projet pour lequel ce plugin me semble important, car il y aura aussi des articles de contenu.

    • Je pensais aussi qu’il serait vraiment utile de ne pas effacer les articles qui ont des commentaires dans le forum.
      J’y pense comme ça et ne suis vraiment pas certain d’avoir les compétences, mais n’est-ce pas le genre de chose facilement gérable via mes_fonctions.php ?

    • Autant pour moi, je me répond (!!!) à mon premier questionnement concernant l’effacement. Après avoir vu le code il s’agit des articles syndiqués et pas des articles créés à partir de ces derniers, donc très bien.

    • Bonjour,
      je ne comprends pas trop bien ce plugin...Pourquoi il n’avale pas les chapos des articles ? est il obligatoire aussi de mettre une boucle article syndic pour que ca marche ?

    Répondre à ce message

  • Je te remercie, ça marche. Entre temps j’avais trouvé :

    div style="background-image : url(’http://localhost/***/spip.php?action=cron’) ;"

    Ca marche aussi.

    Répondre à ce message

  • 1

    Merci de ta réponse. Un lien ? Du genre fichier contenant la balise cron et appelé depuis le 1er site ?

    • Avoir un lien caché comme un tracker qui permet de déclencher un hit sur le 2e site et déclencher une visite et rendre ainsi un cron et le plugin actif.

      A placer sur le site 1 ou sur un site fréquenté :

      <img src="http://www.monsite2.org/spip.php" alt="" width='0' height='0' />

      ou une <iframe> ...

    Répondre à ce message

  • 1

    bonjour,

    Pour un site d’agrégation j’utilise deux spip avec ton plugin pour ne pas faire exploser le serveur. L’un est utilisé pour des remises à jour très fréquentes, l’autre est réglé pour des mises à jour 1 fois par jour.

    Le premier spip consulte la base de données du second. En local le second ne se met pas à jour spontanément.

    Mon second site ne recoit aucune visite puisqu’il ne sert que de support à une base. Le plugin nécessite- il que le site soit visité pour fonctionner ? Ou fonctionne-t-il avec une « horloge » ?

    Merci de ta réponse.

    • bonjour,

      l’agrégation des sites (et donc du plugin flux RSS en articles) dans Spip se fait par le cron général de Spip. Lire cet article pour les détails « Fonctionnement du Cron »

      Il est donc nécessaire d’avoir des visites pour que le cron s’active et que le plugin fonctionne.

      Dans ton cas, il doit possible de trouver une astuce pour résourdre ton problème. Par ex.

      • Créer une tache planifiée (windows) ou un cron (mac/linux) qui visite ton site.
      • Créer un lien caché vers ton site pour avoir de la visite régulièrement
      • ...

    Répondre à ce message

  • ce qui serait bien c’est de pouvoir choisir les sites dont le flux seront convertis en articles.
    ainsi si j’ai 5 sites syndiqués, je décide si son flux ou non sera utilisé par le plugin...sur les 5 je ne veux transformer que 3 sites, les 2 autres ne le seront pas.

    je trouve que ça facilitera pas mal de choses !

    Merci pour votre effort.

    Ps : l’autre problème est que les sites (flux) dans SPIP n’ont pas de paramètre langue, sinon pouvoir décider/orienter que tel article généré est écrit dans telle langue (auto-détection de la langue) serait le summum !!

    @+

    Répondre à ce message

  • bonjour,

    Ce plugin est super c’est exactement ce que je cherchais. Un seul petit soucis quyi ne vient pas du plugin d’ailleurs.

    je veux indexer les flux de news de différents pays, les flux d’un pays dans une rubrique. Sur le sommaire, je fais s’afficher les 10 derniers articles. Les sites de news envoyant leurs rss par rafale, je me retrouve avec 10 articles du meme pays.

    serait il possible d’afficher les 10 derniers articles en ne conservant que le dernier article par rubrique

    je vous met l’adresse du site en travaux en dessous de chaque article il y a indique le pays et vous verrez le probleme

    merci

    Répondre à ce message

  • 1
    ruchemania

    Pour moi sous Spip 2.0.10 le plugin marche.

    L’article créer est composé d’HTML. Ce qui avec spip n’est pas recommandé. N’est-il pas possible d’avoir simplement le texte « a la spip » ?

    Pour les les documents c’est un peu la même chose.

    Pour les vidéos renvoyant vers Youtube,... Ok
    Pour les images il y a : « img src=... » Pas de possibilité d’avoir un « vrai » document distant et pas un code HTML ?

    Les images d’une taille de 787px × 355px sur le site d’origine ont une taille de height:235px ;width:520px à l’arrivée. Bizarre !!!

    • le code des articles est en HTML car c’est qui est fourni par les flux RSS qui peuvent provenir de sources autres que SPIP (dotclear, wordpress, ...). On n’essaie pas convertir le code en syntaxe SPIP car cela risquerait de générer des incohérences.

      S’il vous désirez échanger des informations entre sites SPIP en conservant le formatage, il existe le plugin Spip2Spip

      pour les documents distants, c’est le script qui détecte les tailles des images distants.

    Répondre à ce message

  • Heu ça marche comment ????
    Je suis sur un SPIP 2.0.7 et aucune information n’apparaît quand je crée la syndication un site...
    Où ai-je raté quelque chose ?

    J’ai bien activé le plug-in, je l’ai bien configuré avec cfg...
    bref j’ai essayé de faire comme il fallait mais ça marche pas !!!

    Alex

    Répondre à ce message

  • 3

    J’ai écrit trop vite. Il fallait désactiver l’option « Gérer un annuaire de sites » dans la configuration du site. Merci

    • L’instit

      BON. Non finalement, cela ne fonctionne pas. Je suis sur un spip 2.09, et je tente d’importer des articles depuis 2 sites ; l’un en spip 2.09, l’autre en wordpress, et rien ! quelles que soient les manipulations dans la config du site d’accueil. Une piste ? déjà constaté ?

      merci

      Pierre

    • Le plugin fonctionne bien sur plusieurs sites en SPIP 209

      Pensez à vérifier :

      • Que les sites que vous proposez à la syndication sont bien validés (statut = publié)
      • Que leurs flux RSS contiennent qqchose
      • D’attendre un minimum de temps... le cron de syndication est fixé à 15 min
    • Bonjour,

      2 questions :
      -  je voudrais conserver la totalité des articles et ne jamais les effacer. J’utilise votre plugin avec spipclear et donc je voudrais générer des archives. Comment faire ?
      -  je voudrais modifier l’affiche avec l’intégration des médias dans les articles. Est-ce possible ?

      Merci pour vos réponses à venir.

    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