asjon/scripts/agenda.coffee

48 lines
1.6 KiB
CoffeeScript
Raw Normal View History

2015-04-23 16:51:28 +02:00
Nightmare = require 'nightmare'
cheerio = require 'cheerio'
moment = require 'moment'
downloadAgenda = (day, cb) ->
cbCalled = no
htmlData = ""
loadHtml = -> document.body.innerHTML
saveHtml = (data) -> htmlData = data
dayHasEvents = (b) ->
unless b
cbCalled = yes
cb []
n = new Nightmare()
.goto('https://galilei-cr-sito.registroelettronico.com/login/')
.type('#username',process.env.REGISTRO_USERNAME)
.type('#password',process.env.REGISTRO_PASSWORD)
.click('#btnLogin').wait()
if process.env.REGISTRO_ID_STUDENTE
n.goto('https://galilei-cr-sito.registroelettronico.com/select-student/'+process.env.REGISTRO_ID_STUDENTE+'/')
n.goto('https://galilei-cr-sito.registroelettronico.com/agenda/?d='+day)
.evaluate(loadHtml, saveHtml)
n.run (err,nightmare) ->
if err then console.log err
if !cbCalled and htmlData.length > 0
rowExtractor = ->
if $('td',this).get(1)?
$($('td',this).get(1)).text().trim()
2015-04-23 17:38:28 +02:00
else "(niente)"
2015-04-23 16:51:28 +02:00
$ = cheerio.load htmlData
tab = $('.result_table tr').map(rowExtractor).get()
tab.splice 0, 2
cb tab
cosaCePerIl = (day,res) ->
2015-04-23 18:49:03 +02:00
res.send 'aspetta che guardo l\'agenda per il '+day+' (potrei metterci fino a 3 minuti)'
2015-04-23 16:51:28 +02:00
downloadAgenda day, (data) ->
if data.length is 0
2015-04-23 19:26:48 +02:00
res.send "non c'è niente segnato sull'agenda per il "+day
2015-04-23 16:51:28 +02:00
else
res.send "ecco cosa c'è per doma: "+data.join('; ')
2015-04-23 16:51:28 +02:00
module.exports = (robot) ->
2015-04-24 09:18:49 +02:00
robot.respond /cosa c'è per domani?/i, (res) ->
2015-04-23 16:51:28 +02:00
cosaCePerIl moment().add(1, 'days').format('YYYY-MM-DD'), res
2015-04-24 09:18:49 +02:00
robot.respond /cosa c'è per il (\d+-\d+-\d+)/i, (res) ->
2015-04-23 19:26:48 +02:00
cosaCePerIl res.match[1], res