uni 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTViOTAyZWE2OGFhMjAzMWM3NTcyYmY4NjI0ZjRiMDdkZmI0MTgyOA==
4
+ ZjcyZGYzMGQwMmUzOGNhYmRlOTg2YWUyZWUyNjMyY2VlNDZiZDRkYQ==
5
5
  data.tar.gz: !binary |-
6
- ZjYwOTcwZTFkZmEzZTVmZjRjMGI5MTg4NzlmNTBiYzFlMGZlNmYwMA==
6
+ MjFjYmI3OWI5ZmE2ZDA4ZjI1NGFiOGE5ZDBkMjBhZmY3MmRjMGMxNQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YWI5NzE3ODFiY2EwYWRkNTkwNjRiZTlmYzA0MjgzZjA2YzZjZTc4MjdiYzRi
10
- NzQyNGU3NTM5ZTM3ZTgzYWQ5ODFkZjZiZjljYzRjM2NmZWUyN2E5NWViYWRh
11
- OTIzZGE2ZGJiN2Y5NGY0ZjQ4MzcwMDZhZGJjMDY4NzQxY2M4ZWY=
9
+ N2Q3NTFmZDhmZmZlMDZkNjU1ZmVlODJjOWI5MTNiZTU2MzRjZDhhNDFhMmMw
10
+ YWFlNmQ4ZDg2MmZjMjhiODQwZDUwN2UzMmExNjFhODVhMTUzMzg0MmQzODIw
11
+ NzJlNTkyMjBhNGU3MTllOTkyZjhkMTk5NzMwNTAwYzk5MTQxMWY=
12
12
  data.tar.gz: !binary |-
13
- YjRhZWU3YmRlYzUwYzFkYzVjYjUzN2JiNmQ4NGZlODM0ZmU3Yjc5ZmIxY2E2
14
- ODJhZDliOWVmNjQ3ZjA0NmMyYTc4MmNjY2E5ODAwMWJhNmQ5M2EyMjAwZTdh
15
- N2Y0YjQyM2Y4MTI2NzI3NWMxYjVkNGY5ZGVjY2IzNmY3NTgwMmM=
13
+ MDkxZWIyNTkxNWU0ZWRkNTFiYTRiZDlhMzZiMzljMGJhMDAyZjY4ZGQwMzRh
14
+ NjY2ZGRlNzZlMWIyMDJlZTIwNjkxZTU3MGEwOGVmZTJmMDhhZDlmMGViNTZl
15
+ MzEzNDczNDE0NTgxOTFlZTEzMDhiN2U3YzBjZmFiZWE2ZWVlNDM=
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .idea/
6
7
  Gemfile.lock
7
8
  InstalledFiles
8
9
  _yardoc
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
- $ gem install uni
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
- Uni::codigo_uni 19741084 # => "19741084H"
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
- Uni.initialize
21
- Uni::fast_uni 19741084 # => "19741084H"
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
- Uni.data "19741084H" # => {:codigo=>"19741084H", :nombre=>"REYN...", :facultad=>"INGENIERÍA...", ..., :situacion=>"TITULADO"}
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 esto es obtener esta info [2013-I](http://goo.gl/hqNKI)
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/, '') #&nbsp
55
+ end
56
+ evaluacion<<ans
57
+ end
58
+ evaluacion.delete_at(0)
59
+ evaluacion
60
+ end
61
+ end
@@ -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 = {}, {}
@@ -1,3 +1,3 @@
1
1
  module Uni
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -71,4 +71,9 @@ describe 'Uni' do
71
71
  @egreso[:egreso].should eql "1993 - 1"
72
72
  end
73
73
  end
74
+ describe '#notas' do
75
+ it 'returns hash of grades' do
76
+ true.should eql true
77
+ end
78
+ end
74
79
  end
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.6
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