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",
|
"description": "Il miglior amico della 5IA",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cheerio": "^0.19.0",
|
"cheerio": "^0.19.0",
|
||||||
|
"github": "^0.2.4",
|
||||||
"htmlparser": "^1.7.7",
|
"htmlparser": "^1.7.7",
|
||||||
"hubot": "^2.12.0",
|
"hubot": "^2.12.0",
|
||||||
"hubot-bitcoin": "^1.0.3",
|
"hubot-bitcoin": "^1.0.3",
|
||||||
|
@ -11,7 +11,8 @@
|
|||||||
# REGISTRO_PASSWORD - password per login al registro
|
# REGISTRO_PASSWORD - password per login al registro
|
||||||
#
|
#
|
||||||
# Commands:
|
# 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:
|
# Author:
|
||||||
# Enrico Fasoli (fazo96)
|
# Enrico Fasoli (fazo96)
|
||||||
@ -21,48 +22,91 @@ Nightmare = require 'nightmare'
|
|||||||
cheerio = require 'cheerio'
|
cheerio = require 'cheerio'
|
||||||
moment = require 'moment'
|
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) ->
|
downloadAgenda = (day, cb) ->
|
||||||
cbCalled = no
|
agenda = ""; compiti = ""
|
||||||
htmlData = ""
|
|
||||||
loadHtml = -> document.body.innerHTML
|
loadHtml = -> document.body.innerHTML
|
||||||
saveHtml = (data) -> htmlData = data
|
saveAgenda = (data) -> agenda = data
|
||||||
dayHasEvents = (b) ->
|
saveCompiti = (data) -> compiti = data
|
||||||
unless b
|
dayurl = moment(day,'YYYY-MM-DD').format('YYYY-M-D')
|
||||||
cbCalled = yes
|
|
||||||
cb []
|
|
||||||
n = new Nightmare()
|
n = new Nightmare()
|
||||||
.goto('https://galilei-cr-sito.registroelettronico.com/login/')
|
.goto('https://galilei-cr-sito.registroelettronico.com/login/')
|
||||||
.type('#username',process.env.REGISTRO_USERNAME)
|
.type('#username',process.env.REGISTRO_USERNAME)
|
||||||
.type('#password',process.env.REGISTRO_PASSWORD)
|
.type('#password',process.env.REGISTRO_PASSWORD)
|
||||||
.click('#btnLogin').wait()
|
.click('#btnLogin').wait().screenshot('file.png')
|
||||||
if process.env.REGISTRO_ID_STUDENTE
|
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/select-student/'+process.env.REGISTRO_ID_STUDENTE+'/')
|
||||||
n.goto('https://galilei-cr-sito.registroelettronico.com/agenda/?d='+day)
|
n.goto('https://galilei-cr-sito.registroelettronico.com/agenda/?d='+dayurl)
|
||||||
.evaluate(loadHtml, saveHtml)
|
.evaluate(loadHtml, saveAgenda)
|
||||||
n.run (err,nightmare) ->
|
.goto('https://galilei-cr-sito.registroelettronico.com/tasks/')
|
||||||
if err then console.log err
|
.evaluate(loadHtml, saveCompiti)
|
||||||
if !cbCalled and htmlData.length > 0
|
.run (err,nightmare) ->
|
||||||
rowExtractor = ->
|
if err then console.log err
|
||||||
if $('td',this).get(1)?
|
if agenda.length > 0
|
||||||
$($('td',this).get(1)).text().trim()
|
tab = estraiAgenda agenda
|
||||||
else "(niente)"
|
comp = estraiCompiti compiti
|
||||||
$ = cheerio.load htmlData
|
cb tab, comp
|
||||||
tab = $('.result_table tr').map(rowExtractor).get()
|
else []
|
||||||
tab.splice 0, 2
|
|
||||||
cb tab
|
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) ->
|
cosaCePerIl = (day,res) ->
|
||||||
unless process.env.REGISTRO_USERNAME and process.env.REGISTRO_PASSWORD
|
unless process.env.REGISTRO_USERNAME and process.env.REGISTRO_PASSWORD
|
||||||
return res.send 'non dispongo delle credenziali per il registro :('
|
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)'
|
res.send 'aspetta che guardo l\'agenda per il '+day+' (potrei metterci fino a 3 minuti)'
|
||||||
downloadAgenda day, (data) ->
|
downloadAgenda day, (ag,comp) ->
|
||||||
if data.length is 0
|
if ag.length is 0 and comp.length is 0
|
||||||
res.send "non c'è niente segnato sull'agenda per il "+day
|
res.send "non c'è niente segnato sull'agenda per il "+day
|
||||||
else
|
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) ->
|
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
|
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
|
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:
|
# Description:
|
||||||
# interazioni tra asjon e github
|
# 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) ->
|
module.exports = (robot) ->
|
||||||
robot.router.post '/hubot/githubhook/:room/:name', (req, res) ->
|
robot.router.post '/hubot/githubhook/:room/:name', (req, res) ->
|
||||||
@ -18,3 +30,18 @@ module.exports = (robot) ->
|
|||||||
[c.committer.username,c.message].join ' -> '
|
[c.committer.username,c.message].join ' -> '
|
||||||
commits = cm.join '\n'
|
commits = cm.join '\n'
|
||||||
robot.send dest, s+commits
|
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
|
l.push a[i]+' volt'+(if a[i] is 1 then 'a' else 'e')+' '+i
|
||||||
res.send 'mi hanno chiamato '+l.join(', ')
|
res.send 'mi hanno chiamato '+l.join(', ')
|
||||||
# Altro
|
# 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) ->
|
robot.respond /saluta (.+)/i, (res) ->
|
||||||
res.send 'ciao ' + res.match[1]
|
res.send 'ciao ' + res.match[1]
|
||||||
robot.respond /spaca botilia/i, (res) ->
|
robot.respond /spaca botilia/i, (res) ->
|
||||||
|
Loading…
Reference in New Issue
Block a user