martedì 25 settembre 2012

Unire più calendari Google in un unico feed RSS

Per portare a compimento la gestione degli eventi della mia scuola attraverso i calendari di Google, avevo l'esigenza di "fondere" diversi calendari Google in un unico feed RSS da mostrare nella homepage del sito scolastico Plone.

Per raggiungere questo scopo ho usato Yahoo Pipes.
Per prima cosa ho fornito come input i feed RSS di 3 calendari Google cui ho fatto seguire la stringa
"?&futureevents=true"
in modo che già in partenza i feed contenessero solo eventi non ancora passati.

I feed RSS degli eventi Google Calendar forniscono un contenuto del genere:
Il mio scopo è stato di fare un parsing di contenuti come quello sopra in modo da ottenere una voce (che ho chiamato "content2") di questo tipo:
2012 09 28 13:30 (ANNO MESE GIORNO ORA:MINUTO)
L'ordinamento alfabetico in base a content2 provoca l'ordinamento degli eventi dei 3 calendari in base all'inizio dell'evento.
Vediamo i primi 3 blocchi di Yahoo Pipes:
Il primo blocco raccoglie i feed RSS dei calendari Google da "fondere".
Nel secondo blocco viene creata una voce "content2" che duplica il contenuto del feed.
Il terzo blocco rinomina il nome dei mesi usando il relativo numero: questo sarà utile per ottenere l'ordinamento in base all'inizio degli eventi sfruttando un normale ordinamento alfabetico.
Vediamo i blocchi da 4 a 6:

Il blocco 4 copia la voce "content2" dentro la voce "description": in questo modo il feed "fusione" avrà i mesi espressi come numero.
Il blocco 4 scrive il numero del giorno sempre con due cifre (il giorno "5" diventa "05") e produce la data nella forma ANNO MESE GIORNO.
Il blocco 5 fa modifiche analoghe per la voce "description".
Vediamo ora gli ultimi blocchi:
Il blocco 6 svolge una operazione fondamentale:
al link generato dal feed RSS "fusione" viene aggiunta la stringa
"&ctz=Europe/Rome"
grazie alla quale quando si clicca su un evento viene mostrato con il fuso orario corretto.
Senza questo accorgimento, chi non ha un account Google riceve informazioni sull'evento usando il fuso orario di Greenwich.
Il blocco 7 effettua l'ordinamento alfabetico in base alla voce "content2"
Il blocco 8 è l'uscita dal tubo.
Il risultato è questo:
Questo elenco può essere trasmesso come feed RSS, JSON e molto altro verso il proprio sito internet.



Nessun commento:

Posta un commento