Ciao a tutti!
Ho realizzato un piccolo script js, per leggere gli rss da più siti ed ordinarli dal più recente al più vecchio.
Naturalmente la soluzione non è l'unica, ma essendo abba novello di programmazione è quello che sono riuscito a fare!
Lo posto qui per avere qualche commento dai più esperti e lo metto a disposizione di chi può averne bisogno.
Se avete idee alternative alla soluzione del problema sarei curioso di sentirle.
Davide
codice:
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("feeds", "1");
var elenconotizie = new Array();
var inc = 0;
function initialize()
{
var attributes = ["title", "link", "publishedDate", "contentSnippet"];
//elenco siti da dove prelevare gli rss
var siti = new Array();
siti[0] = "http://www.repubblica.it/rss/homepage/rss2.0.xml";
siti[1] = "http://www.repubblica.it/rss/cronaca/rss2.0.xml";
siti[2] = "http://www.ilsole24ore.com/rss/primapagina.xml";
//ciclo per recuperare gli rss da ogni sito
for (var i=0; i<3; i++)
{
var url = siti[i];
var feed = new google.feeds.Feed(url);
// numero di notizie rss da scaricare per singolo sito
feed.setNumEntries(4);
feed.load(function(result)
{
if (!result.error)
{
for (i=0; i < result.feed.entries.length; i++)
{
var thefeeds=result.feed.entries;
//sistemo il formato della data e dell'ora
var itemdate=new Date(thefeeds[i].publishedDate);
var itemdate_yr=itemdate.getFullYear()
var itemdate_mon=itemdate.getMonth()+1
var itemdate_day=itemdate.getDate()
var itemdate_ore=itemdate.getHours()
var itemdate_min=itemdate.getMinutes()
var itemdate_sec=itemdate.getSeconds()
if (itemdate_day < 10) { var itemdate_day = "0" + itemdate_day; }
if (itemdate_mon < 10) { var itemdate_mon = "0" + (itemdate_mon); }
if (itemdate_ore < 10) { var itemdate_ore = "0" + itemdate_ore; }
if (itemdate_min < 10) { var itemdate_min = "0" + (itemdate_min); }
if (itemdate_sec < 10) { var itemdate_sec = "0" + itemdate_sec; }
//creo la stringa da stampare a video e salvare in un array
var outputb=itemdate_yr + "/" + itemdate_mon + "/" + itemdate_day + " " + itemdate_ore + ":" + itemdate_min + ":" + itemdate_sec + " " + result.feed.entries[i].title + "indirizzodaaprire" + result.feed.entries[i].link; //format: yyyy/month/day
//chiamo la funzione
stampa (outputb);
}
}
});
}
}
//funzione che stampa a video gli rss ordinati recuperati
function stampa (notizia)
{
elenconotizie[inc] = notizia;
inc= inc+1;
var elenconotizieord = (elenconotizie.sort());
if ( inc == "12")
{
for (i=11; i>=0; (i--))
{
var strlnk = elenconotizieord[i];
var ind_str= strlnk.indexOf('indirizzodaaprire');
var newstring= strlnk.substring(ind_str+17);
var epurata = strlnk.substring(0,ind_str);
var container = document.getElementById("feed");
var div = document.createElement("div");
div.appendChild(document.createTextNode
(epurata));
var link = document.createElement('a');
link.setAttribute('href', newstring);
link.appendChild(document.createTextNode("Leggi..."));
div.appendChild(link);
div.appendChild(document.createElement('br'));
div.appendChild(document.createElement('br'));
container.appendChild(div);
}
}
}
//funzione per l'aggiornamento degli rss
setInterval(function ()
{
document.getElementById('feed').innerHTML = '';
inc= 0;
initialize();
}, 300000);
//inizializzazione funzione lettura rss
google.setOnLoadCallback(initialize);
</script>
</head>
<body>
<!--div che viene creato con le funzioni DOM-->
<div id="feed" style="width:400px; border:solid 2px #999; padding:8px;"></div>
</body>
</html>