Mixer des flux RSS

WRInaute discret
Bonjour,

vous connaissez sans doute ces services:
- xfruits ( http://www.xfruits.com/?lg=fr )
- rss mixer ( http://www.rssmixer.com/ )
- http://feedjumbler.com/
- http://feeddigest.com/

aussi je ne voudrais pas devenir dépendant de ces services. Il suffirait que l'un tombe en panne pour devoir refaire fissa chez un autre..

En utilisant Simplepie, es-ce possible d'arriver au même résultat en local?
Couplé à une tâche cron, qui irait vérifier les maj toutes les demies-heures par exemple. On peut ainsi maitriser totalement son flux mixé, en pouvant par exemple émettre différents formats de sortie.

Cela existe-il déjà?

++
 
WRInaute discret
Babos a dit:
Pourquoi ne pas utiliser Magpie Rss ?
parce que j'ai pas envie :p
nan sérieusement, simplepie a un développement actif et je l'utilise déjà dans quelques autres scripts

Babos a dit:
Tu peux voir le résultat ici -http://www.footmanager.net/actufoot/
sauf que là ya rien de mixé..
Je veux un seul flux rss unique à la sortie, mais avec différents sources différentes. Et c'est pour afficher dans un petit encart de news avec effet défilant :)
 
Nouveau WRInaute
je pensse que c 'est possible en faissant un cron qui passe tous les jour pour verifié la date de publication du dernier article recuperé sur chaque flux que tu posséde mais y doit avoir un autre moyen plus simple :!:
 
Nouveau WRInaute
je me permet de remonter se poste car je suis tombe sur un article qui aideras surement les personne qui veulent mixer des flux avec magpierss et les affiche par date :D
Code:
<?php

define('MAX_ITEMS', 20);

require_once('magpierss/rss_fetch.inc');

$urls = array(
    'http://example.com/atom/',
    'http://example.com/rss.xml',
    'http://example.com/links/index.xml'
);

$items = array();

// loop thru all urls & merge feeds into master array
foreach ( $urls as $url ) {
    $rss = fetch_rss($url);
    if (!$rss) continue;
    $items = array_merge($items, $rss->items);
}

// sort all items in array by date
usort($items, 'date_cmp');

// generate ouput array
$out = array();

foreach ($items as $item) {
    $href    = $item['link'];
    $title    = $item['title'];
    $out[] = '<li><a href="'.$href.'" title="'.$title.'">'.$title.'</a></li>';
}

if (count($out) > MAX_ITEMS)
    $out = array_slice($out,0,MAX_ITEMS);

echo ($out) 
    ? "<ul>\n".join("\n",$out)."\n</ul>"
    : '';


// sorts feed array based on published date (used with usort)
// -------------------------------------------------------------
    function date_cmp($a, $b) 
    {
        $atime = (empty($a['date_timestamp']))
            ? strtotime($a['dc']['date'])
            : $a['date_timestamp'];

        $btime = (empty($b['date_timestamp']))
            ? strtotime($b['dc']['date'])
            : $b['date_timestamp'];

        if ($atime == $btime)
            return 0;
    
        return ($atime > $btime) ? -1 : 1;
    }

?>
voila
maintenant il me reste plus qu'a trouve une solution pour suprimer les flux en double array_unique devrait faire l'affaire mais j'arrive pas a le metre en place :?
 
Discussions similaires
Haut