# Description: # si collega al sito della scuola e legge le circolari # # Dependencies: # "cheerio": "0.19.0" # # Configuration: # None # # Commands: # hubot mostrami le (ultime (n)) circolari - stampa la lista delle ultime circolari # hubot linkami la circolare (numero/n/n°) (n) - linka una circolare precisa # # Author: # Enrico Fasoli (fazo96) # cheerio = require('cheerio') parseHtml = (htmlData,done) -> $ = cheerio.load htmlData tab = $('tr').map (i) -> # console.log($('td',this).html()) # console.log($(this,'td').length) link = ""; destinatario = "" l = $('td',this).map (j) -> # console.log($(this).html()) if $('a',this).get(0)? #console.log($('a',this).get(0)) if $('a',this).get(0).attribs?.href? link = 'http://galileicrema.it' + $('a',this).get(0).attribs.href item = $(this).text().trim() # console.log(i,j,item) # console.log(item.length) if(j == 5) destinatario = item.split('\n\n\t\t\t\t\t') # if(destinatario[0] === "Tutti") destinatario = ["ATA","Docenti","Studenti"] return item l = l.get() obj = protocollo: l[0], mittente: l[1], titolo: l[2], oggetto: l[3], data: l[4], destinatario: destinatario, link: link return obj tab = tab.get() tab.splice 0, 1 done null, tab downloadCircolari = (robot, callback) -> robot.http("http://galileicrema.it/Intraitis/comunicazioni/ComVis.asp?PerChi=Tutti") .get() (err, res, body) -> callback err, body diffCircolari = (oldObj,newObj) -> diff = newObj.length - oldObj.length newObj.slice(0,diff) parseCircolari = (err,data,callback) -> if err console.log(err) else parseHtml data, (err,res) -> callback res module.exports = (robot) -> robot.respond /(?:mostrami|dimmi|fammi vedere|quali sono) (?:le(?: ultime)? )?([0-9]+ )?circolari/i, (res) -> if res.match[1] is 0 then return res.send "sto controllando le circolari..." num = 10 if not isNaN(res.match[1]) num = parseInt res.match[1] downloadCircolari robot, (a,b) -> parseCircolari a, b, (x) -> list = x.slice 0, (num or 5) msg = list.map (c) -> ['('+c.protocollo.split('/')[0]+')','('+c.data+')',c.titolo].join(' ') res.send msg.join ' | ' robot.respond /linkami (?:(?:la )?circolare )(?:(?:n(?:°)?(?: )?)|numero )?(\d+)/i, (res) -> base = "http://galileicrema.it/Intraitis/documenti/comunicazioni/2014/Circolare" res.send base+res.match[1]+'.pdf'