uni 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitignore +1 -0
- data/README.md +28 -18
- data/lib/uni.rb +4 -1
- data/lib/uni/private_info.rb +61 -0
- data/lib/uni/public_info.rb +1 -3
- data/lib/uni/version.rb +1 -1
- data/spec/lib/uni_spec.rb +5 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZjcyZGYzMGQwMmUzOGNhYmRlOTg2YWUyZWUyNjMyY2VlNDZiZDRkYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjFjYmI3OWI5ZmE2ZDA4ZjI1NGFiOGE5ZDBkMjBhZmY3MmRjMGMxNQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
N2Q3NTFmZDhmZmZlMDZkNjU1ZmVlODJjOWI5MTNiZTU2MzRjZDhhNDFhMmMw
|
10
|
+
YWFlNmQ4ZDg2MmZjMjhiODQwZDUwN2UzMmExNjFhODVhMTUzMzg0MmQzODIw
|
11
|
+
NzJlNTkyMjBhNGU3MTllOTkyZjhkMTk5NzMwNTAwYzk5MTQxMWY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDkxZWIyNTkxNWU0ZWRkNTFiYTRiZDlhMzZiMzljMGJhMDAyZjY4ZGQwMzRh
|
14
|
+
NjY2ZGRlNzZlMWIyMDJlZTIwNjkxZTU3MGEwOGVmZTJmMDhhZDlmMGViNTZl
|
15
|
+
MzEzNDczNDE0NTgxOTFlZTEzMDhiN2U3YzBjZmFiZWE2ZWVlNDM=
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,32 +1,42 @@
|
|
1
|
+
## Uni
|
1
2
|
Simple interface de la [Orce](http://www.orce.uni.edu.pe/).
|
2
|
-
Permite visualizar informacion publica, validar codigo, obtener la letra del mismo y consultar notas (password requerido)
|
3
|
-
|
4
|
-
Instalacion
|
5
|
-
|
3
|
+
Permite visualizar informacion publica, validar codigo, obtener la letra del mismo y consultar notas (password requerido, pronto ...)
|
4
|
+
## Instalacion
|
6
5
|
```bash
|
7
|
-
|
6
|
+
$ gem install uni
|
8
7
|
```
|
9
|
-
|
10
8
|
## Ejemplos de uso:
|
11
|
-
|
12
9
|
### Obtener la letra del codigo:
|
13
|
-
|
10
|
+
Usando el algoritmo de MOD11
|
14
11
|
```ruby
|
15
|
-
|
12
|
+
Uni.codigo_uni 19741084 # => "19741084H"
|
16
13
|
```
|
17
|
-
De ser necesario un calculo de la letra mas rapido, usar fast_uni, pero antes se debe invocar a initialize en la constante 'Uni'
|
18
|
-
|
14
|
+
De ser necesario un calculo de la letra mas rapido(memoria), usar fast_uni, pero antes se debe invocar a initialize en la constante 'Uni'
|
19
15
|
```ruby
|
20
|
-
|
21
|
-
|
16
|
+
Uni.initialize
|
17
|
+
Uni.fast_uni 19741084 # => "19741084H"
|
22
18
|
```
|
23
|
-
|
24
19
|
### Consultar informacion basica:
|
25
|
-
|
20
|
+
Tambien llamada informacion publica, que se obtiene al hacer busqueda de alumno.
|
26
21
|
```ruby
|
27
|
-
|
22
|
+
Uni.data "19741084H" # => {:codigo=>"19741084H", :nombre=>"...", :facultad=>"...", ...}
|
28
23
|
```
|
29
|
-
|
24
|
+
### Consultar cursos, seccion, evaluaciones, calificaciones, etc
|
25
|
+
Se require conocer el codigo y password del alumno(regular).
|
26
|
+
```ruby
|
27
|
+
codigo = "20152015"
|
28
|
+
password = "99999"
|
29
|
+
notas = Uni.notas codigo, password
|
30
|
+
```
|
31
|
+
Retorna un Array de Hashes, cada Hash corresponde a un curso
|
32
|
+
```ruby
|
33
|
+
puts notas[0]
|
34
|
+
# { :curso => "CALCULO RECONTRAVARIABLE", :codigo => "CB102", :seccion => "U",
|
35
|
+
# :notas => {:practicas=>[["PRACTICA 1", "15", "--", "19.35%"], [...], ...],
|
36
|
+
# :examenes=>[["EXAMEN PARCIAL", "13", "--", "35.48%"], ...]}}
|
37
|
+
```
|
38
|
+
## Ideas/problemas/uso
|
39
|
+
* TODO: Clase alumno, Uni.sample, filtrar, subir el modulo uni_private (cursos, notas, etc), cambiar de nombre a la gema
|
30
40
|
* Sugerencias, dudas o problemas aqui en la repo o en su defecto a mi [email](mailto:cxrlospxndo@gmail.com).
|
31
|
-
* De momento lo mas cool que he hecho con
|
41
|
+
* De momento lo mas cool que he hecho con esta gema es obtener esta info [2013-I](http://goo.gl/hqNKI)
|
32
42
|
|
data/lib/uni.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
+
require 'mechanize'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
1
4
|
require "uni/version"
|
2
5
|
require "uni/public_info"
|
6
|
+
require "uni/private_info"
|
3
7
|
|
4
8
|
module Uni
|
5
9
|
class Amijo
|
@@ -21,7 +25,6 @@ module Uni
|
|
21
25
|
data = Uni::data codigo
|
22
26
|
puts data
|
23
27
|
end
|
24
|
-
|
25
28
|
## cursos y notas
|
26
29
|
#def top
|
27
30
|
# ...
|
@@ -0,0 +1,61 @@
|
|
1
|
+
URL = "http://www.orce.uni.edu.pe/"
|
2
|
+
module Uni
|
3
|
+
# Falta refactorizar, aplicar buenas practicas, tests, etc
|
4
|
+
# http://www.orce.uni.edu.pe/recordNotas.php?op=cursos&flag=notas
|
5
|
+
# http://www.orce.uni.edu.pe/recordNotas.php?op=notas&tipo=Teoria&codcur=GP102&facul=I&codsec=V
|
6
|
+
# http://www.orce.uni.edu.pe/recordNotas.php?op=notas&tipo=Practicas&codcur=GP102&facul=I&codsec=V
|
7
|
+
# Se muestran las tablas tal cual, para evitar problemas en # de practicas, monografias, laboratorios, etc
|
8
|
+
# Obtiene las notas de un alumno regular
|
9
|
+
# @param codigo [String] Codigo del alumno # "20152015G"
|
10
|
+
# @param password [String] password de orce # "12345"
|
11
|
+
# @return [Array] Notas del ciclo
|
12
|
+
def self.notas codigo, password
|
13
|
+
cursos = []
|
14
|
+
|
15
|
+
agent = Mechanize.new
|
16
|
+
params = {"txtusu" => codigo, "txtcla" => password}
|
17
|
+
agent.post( URL + "logeo.php", params)
|
18
|
+
agent.get URL + "recordNotas.php?op=cursos&flag=notas"
|
19
|
+
pag = agent.page
|
20
|
+
a=[]
|
21
|
+
pag.parser.css('tr.fila td').each do |f|
|
22
|
+
a << f.text
|
23
|
+
end
|
24
|
+
|
25
|
+
n = a.size/5
|
26
|
+
|
27
|
+
(1..n).each do |i|
|
28
|
+
ans = { curso: "", codigo: "", seccion: "", notas: {} }
|
29
|
+
ind = (i-1)*5
|
30
|
+
curso = a[ind.. ind+4]
|
31
|
+
ans[:codigo] = curso[0]
|
32
|
+
ans[:curso] = curso[1]
|
33
|
+
ans[:seccion] = curso[2]
|
34
|
+
|
35
|
+
practicas = obtener_notas_de "Practicas", ans[:codigo], ans[:seccion], agent
|
36
|
+
examenes = obtener_notas_de "Teoria", ans[:codigo], ans[:seccion], agent
|
37
|
+
|
38
|
+
ans[:notas] = { practicas: practicas, examenes: examenes}
|
39
|
+
cursos << ans
|
40
|
+
end
|
41
|
+
cursos
|
42
|
+
end
|
43
|
+
# Obtiene las notas de un curso por tipo de evaluacion (practicas, teoria)
|
44
|
+
# @return [Array] Nota del curso
|
45
|
+
|
46
|
+
def self.obtener_notas_de evaluacion, codigo, seccion, agent
|
47
|
+
agent.get URL+"recordNotas.php?op=notas&tipo=#{evaluacion}&codcur=#{codigo}&facul=I&codsec=#{seccion}"
|
48
|
+
pag_evaluacion = agent.page
|
49
|
+
|
50
|
+
evaluacion=[]
|
51
|
+
pag_evaluacion.parser.css("tr td").each_slice(4) do |f|
|
52
|
+
ans = []
|
53
|
+
f.each do |c|
|
54
|
+
ans << c.content.gsub(/\u00a0/, '') # 
|
55
|
+
end
|
56
|
+
evaluacion<<ans
|
57
|
+
end
|
58
|
+
evaluacion.delete_at(0)
|
59
|
+
evaluacion
|
60
|
+
end
|
61
|
+
end
|
data/lib/uni/public_info.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require 'mechanize'
|
3
|
-
require 'nokogiri'
|
4
|
-
|
5
2
|
SITUACIONX = [ "SUSPENSION VOLUNTARIA", "ALUMNO REGULAR", "INACTIVO", "EN REGULARIZACION DE CURSO(S)", "EXPULSADO", "INACTIVO", "RETIRADO ", "FALLECIDO", "SUSPENSION ", "PROYECTO ESPECIAL ALUMNOS UNI"]
|
6
3
|
SITUACIONY = [ "TITULADO", "BACHILLER", "EGRESADO"]
|
4
|
+
|
7
5
|
module Uni
|
8
6
|
SITUACION = SITUACIONX + SITUACIONY
|
9
7
|
@x, @y = {}, {}
|
data/lib/uni/version.rb
CHANGED
data/spec/lib/uni_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uni
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carlos Pando
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- README.md
|
95
95
|
- Rakefile
|
96
96
|
- lib/uni.rb
|
97
|
+
- lib/uni/private_info.rb
|
97
98
|
- lib/uni/public_info.rb
|
98
99
|
- lib/uni/version.rb
|
99
100
|
- spec/lib/uni_spec.rb
|