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>

Rispondi quotando