Guanacast Alert
March 1st, 2010
Guanacast Alert é um plugin para Firefox, que muito com provavelmente não vai mudar o mundo, mas me ajuda a não ter que acessar o site do Guanabara a cada cinco minutos, para ver se já tem uma nova edição desse fantástico podcast. Também é uma forma de presentear a galera do Guanacast que de longe são os melhores quando o assunto é podcast de tecnologia.
O plugin tem como licença GNU então fique a vontade para alterar, redistribuir e me dar dicas. Para baixar direto do site da Mozilla clique aqui.
Screenshots
Fonte
Para quem é mais geek nada como ter o código fonte (ignore os erros de português ;) ):
var guanacastalert = {
// Chamado quando o Addon é carregado.
onLoad: function() {
this.initialized = true;
var conf = Components.classes['@mozilla.org/preferences-service;1'].getService().QueryInterface(Components.interfaces.nsIPrefBranch);
var dataUltimaVerificacao = conf.getCharPref("extensions.guanacastalert.DataUltimaVerificacao");
var dataHoje = new Date();
//Se hoje não for domingo, então eu vamos fazer apenas uma verificação diária.
if (dataHoje.getDay() != 0){
//Se ainda não verificamos e existe um novo guanacast hoje.
if (dataUltimaVerificacao != dataHoje.getDate() + '/' + dataHoje.getMonth() + '/' + dataHoje.getFullYear()){
//Verificar a existencia de um novo guanacast daqui um minuto.
setTimeout(this.verificarNovoGuanacastNoAr, 60000);
}
}else{ //Se hoje é domingo
var dataUltimoGuanacast = conf.getCharPref("extensions.guanacastalert.DataUltimoGuanacast");
//Se ainda não temos conhecimento de nenhum guanacast hoje.
if (dataHoje != new Date(dataUltimoGuanacast)){
//Verificar se já saiu o guanacast daqui um minuto.
setTimeout(this.verificarNovoGuanacastNoAr, 60000);
//Verificar se já saiu o guanacast a cada 40 minutos.
var intevalVerificacao = setInterval(this.verificarNovoGuanacastNoAr, 2400000);
}
}
},
// Faz a verificação da existência de um novo guanacast.
verificarNovoGuanacastNoAr: function() {
var conf = Components.classes['@mozilla.org/preferences-service;1'].getService()
.QueryInterface(Components.interfaces.nsIPrefBranch);
var nomeUltimoGuanacast = conf.getCharPref("extensions.guanacastalert.NomeUltimoGuanacast");
var dataUltimoGuanacast = conf.getCharPref("extensions.guanacastalert.DataUltimoGuanacast");
var dataHoje = new Date();
var retorno = false;
//Se ainda não foi lançado nenhum novo guanacast.
if (dataHoje != new Date(dataUltimoGuanacast)){
var request = new XMLHttpRequest();
request.open('GET', 'http://feeds.feedburner.com/guanacast?format=xml', false);
request.send(null);
if(request.status == 200){
var xml = request.responseXML;
var nomeGuanacastAtual = xml.getElementsByTagName('title')[2].firstChild.data;
var dataGuanacastAtual = new Date(xml.getElementsByTagName('pubDate')[0].firstChild.data);
var linkGuanacastAtual = xml.getElementsByTagName('link')[2].firstChild.data;
//Se o guanacast consultado é diferente do que tinhamos conhecimento.
if (dataUltimoGuanacast != dataGuanacastAtual.getDate() + '/' + dataGuanacastAtual.getMonth() + '/' + dataGuanacastAtual.getFullYear()){ //Se o nome do guanacast consultado for diferente do que tinhamos guardado anteriormente então significa que ele é um novo episodio!
conf.setCharPref("extensions.guanacastalert.NomeUltimoGuanacast", nomeGuanacastAtual);
conf.setCharPref("extensions.guanacastalert.DataUltimoGuanacast", dataGuanacastAtual.getDate() + '/' + dataGuanacastAtual.getMonth() + '/' + dataGuanacastAtual.getFullYear());
conf.setCharPref("extensions.guanacastalert.LinkUltimoGuanacast", linkGuanacastAtual);
retorno = true;
window.open("chrome://guanacastalert/content/alertGuanacastNoAr.xul", "", "chrome");
}
conf.setCharPref("extensions.guanacastalert.DataUltimaVerificacao", dataHoje.getDate() + '/' + dataHoje.getMonth() + '/' + dataHoje.getFullYear());
}
}
return retorno;
},
//Evento chamado ao clicar no icone na barra de statys
openAlert: function() {
var dataUltimoGuanacast = Components.classes['@mozilla.org/preferences-service;1']
.getService()
.QueryInterface(Components.interfaces.nsIPrefBranch)
.getCharPref("extensions.guanacastalert.DataUltimoGuanacast");
var dataHoje = new Date();
if (!this.verificarNovoGuanacastNoAr()){
window.open("chrome://guanacastalert/content/alertAguardandoGuanacast.xul", "", "chrome");
}
},
};
window.addEventListener("load", function(e) { guanacastalert.onLoad(e); }, false);





Leave a Reply