compiti e issue implementati. fix #6
This commit is contained in:
parent
2470fa82db
commit
957c00fc78
@ -6,6 +6,7 @@
|
||||
"description": "Il miglior amico della 5IA",
|
||||
"dependencies": {
|
||||
"cheerio": "^0.19.0",
|
||||
"github": "^0.2.4",
|
||||
"htmlparser": "^1.7.7",
|
||||
"hubot": "^2.12.0",
|
||||
"hubot-bitcoin": "^1.0.3",
|
||||
|
@ -11,7 +11,8 @@
|
||||
# REGISTRO_PASSWORD - password per login al registro
|
||||
#
|
||||
# Commands:
|
||||
# hubot cosa c'è per (domani|il (data))? - controlla agenda per la data richiesta
|
||||
# hubot agenda (per il) (domani|il (data)) - controlla i compiti assegnati il giorno dato e l'agenda per quel giorno
|
||||
# hubot che compiti ci sono? - mostra i compiti assegnati durante l'ultima settimana
|
||||
#
|
||||
# Author:
|
||||
# Enrico Fasoli (fazo96)
|
||||
@ -21,48 +22,91 @@ Nightmare = require 'nightmare'
|
||||
cheerio = require 'cheerio'
|
||||
moment = require 'moment'
|
||||
|
||||
estraiCompiti = (compiti) ->
|
||||
extractorCompiti = ->
|
||||
col = $($('td',this).get(1)).text().trim()
|
||||
arr = col.split(/(?:\s+)Materia: /i)
|
||||
if $('td',this).get(1)?
|
||||
data: $($('td',this).get(0)).text().trim()
|
||||
text: arr[0], materia: arr[1]
|
||||
else {}
|
||||
$ = cheerio.load compiti
|
||||
return $('.result_table tr').map(extractorCompiti).get().filter (c) -> c.text?
|
||||
|
||||
estraiAgenda = (agenda) ->
|
||||
extractorAgenda = ->
|
||||
if $('td',this).get(1)?
|
||||
$($('td',this).get(1)).text().trim()
|
||||
else "(niente)"
|
||||
$ = cheerio.load agenda
|
||||
tab = $('.result_table tr').map(extractorAgenda).get()
|
||||
tab.splice 0, 2
|
||||
return tab
|
||||
|
||||
downloadAgenda = (day, cb) ->
|
||||
cbCalled = no
|
||||
htmlData = ""
|
||||
agenda = ""; compiti = ""
|
||||
loadHtml = -> document.body.innerHTML
|
||||
saveHtml = (data) -> htmlData = data
|
||||
dayHasEvents = (b) ->
|
||||
unless b
|
||||
cbCalled = yes
|
||||
cb []
|
||||
saveAgenda = (data) -> agenda = data
|
||||
saveCompiti = (data) -> compiti = data
|
||||
dayurl = moment(day,'YYYY-MM-DD').format('YYYY-M-D')
|
||||
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()
|
||||
.click('#btnLogin').wait().screenshot('file.png')
|
||||
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()
|
||||
else "(niente)"
|
||||
$ = cheerio.load htmlData
|
||||
tab = $('.result_table tr').map(rowExtractor).get()
|
||||
tab.splice 0, 2
|
||||
cb tab
|
||||
n.goto('https://galilei-cr-sito.registroelettronico.com/agenda/?d='+dayurl)
|
||||
.evaluate(loadHtml, saveAgenda)
|
||||
.goto('https://galilei-cr-sito.registroelettronico.com/tasks/')
|
||||
.evaluate(loadHtml, saveCompiti)
|
||||
.run (err,nightmare) ->
|
||||
if err then console.log err
|
||||
if agenda.length > 0
|
||||
tab = estraiAgenda agenda
|
||||
comp = estraiCompiti compiti
|
||||
cb tab, comp
|
||||
else []
|
||||
|
||||
getCompiti = (cb) ->
|
||||
compiti = ''
|
||||
loadHtml = -> document.body.innerHTML
|
||||
saveCompiti = (data) -> compiti = data
|
||||
n = new Nightmare()
|
||||
n.goto('https://galilei-cr-sito.registroelettronico.com/login/')
|
||||
n.type('#username',process.env.REGISTRO_USERNAME)
|
||||
n.type('#password',process.env.REGISTRO_PASSWORD)
|
||||
n.click('#btnLogin').wait().screenshot('file.png')
|
||||
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/tasks/')
|
||||
n.evaluate(loadHtml, saveCompiti)
|
||||
n.run (err,nightmare) -> cb estraiCompiti compiti
|
||||
|
||||
cosaCePerIl = (day,res) ->
|
||||
unless process.env.REGISTRO_USERNAME and process.env.REGISTRO_PASSWORD
|
||||
return res.send 'non dispongo delle credenziali per il registro :('
|
||||
res.send 'aspetta che guardo l\'agenda per il '+day+' (potrei metterci fino a 3 minuti)'
|
||||
downloadAgenda day, (data) ->
|
||||
if data.length is 0
|
||||
downloadAgenda day, (ag,comp) ->
|
||||
if ag.length is 0 and comp.length is 0
|
||||
res.send "non c'è niente segnato sull'agenda per il "+day
|
||||
else
|
||||
res.send "ecco cosa c'è per doma: "+data.join('; ')
|
||||
c = comp.filter (x) -> x.data is moment(day,'YYYY-MM-DD').format('DD-MM-YYYY')
|
||||
c = c.map (x) -> x.materia+': '+x.text
|
||||
res.send "Agenda del #{day}: "+ag.concat(c).join(', ')
|
||||
|
||||
module.exports = (robot) ->
|
||||
robot.respond /cosa c'è per domani?/i, (res) ->
|
||||
robot.respond /(?:guarda l')?agenda (?:per )?doma(?:ni)?/i, (res) ->
|
||||
cosaCePerIl moment().add(1, 'days').format('YYYY-MM-DD'), res
|
||||
robot.respond /cosa c'è per il (\d+-\d+-\d+)/i, (res) ->
|
||||
robot.respond /(?:guarda l')?agenda (?:per il )?(\d+-\d+-\d+)/i, (res) ->
|
||||
cosaCePerIl res.match[1], res
|
||||
robot.respond /(?:che )?compiti(?: ci sono)?(?:\?)?/i, (res) ->
|
||||
res.send 'controllo compiti...'
|
||||
getCompiti (compiti) ->
|
||||
# tengo solo quelli per il futuro
|
||||
compiti = compiti.filter (c) ->
|
||||
moment(c.data,'DD-MM-YYYY').isAfter(moment().subtract(1,'weeks'))
|
||||
# trasformo in stringa
|
||||
compiti = compiti.map (c) ->
|
||||
[c.data,c.materia,c.text].join ' | '
|
||||
res.send compiti.join '\n'
|
||||
|
@ -1,5 +1,17 @@
|
||||
# Description:
|
||||
# interazioni tra asjon e github
|
||||
#
|
||||
# Requires:
|
||||
# "github": "0.2.4"
|
||||
#
|
||||
# Commands:
|
||||
# asjon mostra le issue - mostra le issue aperte su fazo96/asjon
|
||||
#
|
||||
# Author:
|
||||
# Enrico Fasoli (fazo96)
|
||||
|
||||
GitHubAPI = require 'github'
|
||||
github = new GitHubAPI version: '3.0.0'
|
||||
|
||||
module.exports = (robot) ->
|
||||
robot.router.post '/hubot/githubhook/:room/:name', (req, res) ->
|
||||
@ -18,3 +30,18 @@ module.exports = (robot) ->
|
||||
[c.committer.username,c.message].join ' -> '
|
||||
commits = cm.join '\n'
|
||||
robot.send dest, s+commits
|
||||
if process.env.AUTO_KILL_ON_UPDATE
|
||||
setTimeout 1000, ->
|
||||
console.log 'DYING NOW AS REQUESTED!'
|
||||
process.exit 0
|
||||
|
||||
robot.respond /(?:(?:mostra(?:mi)?|fammi vedere) )(?:le )?issue(?:s)?/i, (res) ->
|
||||
msg = state: 'open', user: 'fazo96', repo: 'asjon', sort: 'updated'
|
||||
res.send 'controllo issues...'
|
||||
github.issues.repoIssues msg, (err,data) ->
|
||||
if err then return res.send err
|
||||
r = data.map (i) ->
|
||||
labels = i.labels.map((x) -> x.name).join ', '
|
||||
if labels is '' then labels = 'nessuno'
|
||||
["#"+i.number,i.title,"By: "+i.user.login,'Tags: '+labels].join(' | ')
|
||||
res.send r.join '\n'
|
||||
|
@ -45,8 +45,6 @@ module.exports = (robot) ->
|
||||
l.push a[i]+' volt'+(if a[i] is 1 then 'a' else 'e')+' '+i
|
||||
res.send 'mi hanno chiamato '+l.join(', ')
|
||||
# Altro
|
||||
robot.hear /compiti/i, (res) ->
|
||||
res.send 'ricordatevi che se mi chiamate chiedendo cosa c\'è per domani posso guardare io sull\'agenda!'
|
||||
robot.respond /saluta (.+)/i, (res) ->
|
||||
res.send 'ciao ' + res.match[1]
|
||||
robot.respond /spaca botilia/i, (res) ->
|
||||
|
Loading…
Reference in New Issue
Block a user