86 lines
2.5 KiB
CoffeeScript
86 lines
2.5 KiB
CoffeeScript
# 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'
|
|
|