added poetry estructure
parent
3edc9eb843
commit
dab65ebe11
|
@ -102,3 +102,7 @@ venv.bak/
|
||||||
|
|
||||||
# mypy
|
# mypy
|
||||||
.mypy_cache/
|
.mypy_cache/
|
||||||
|
|
||||||
|
# Poetry Stuff
|
||||||
|
poetry.lock
|
||||||
|
*.egg-info/
|
||||||
|
|
10
README.md
10
README.md
|
@ -2,20 +2,19 @@
|
||||||
|
|
||||||
### Extrae información de alumnos y profesores de la Universidad de Guadalajara
|
### Extrae información de alumnos y profesores de la Universidad de Guadalajara
|
||||||
|
|
||||||
****
|
* #### __Dependencias__
|
||||||
* ##### __Dependencias__
|
|
||||||
* python 2
|
* python 2
|
||||||
* requests
|
* requests
|
||||||
|
|
||||||
* ##### __Método de uso__
|
* #### __Método de uso__
|
||||||
```
|
```
|
||||||
#extraer nombre
|
# extraer nombre
|
||||||
from libSIIAU import Alumno
|
from libSIIAU import Alumno
|
||||||
codigo = "123456789"
|
codigo = "123456789"
|
||||||
alumno = Alumno(codigo, "uno2ytres")
|
alumno = Alumno(codigo, "uno2ytres")
|
||||||
print "Nombre: %s" % alumno.nombre
|
print "Nombre: %s" % alumno.nombre
|
||||||
|
|
||||||
#Validar codigo y NIP
|
# Validar codigo y NIP
|
||||||
from libSIIAU import Alumno
|
from libSIIAU import Alumno
|
||||||
codigo = "123456789"
|
codigo = "123456789"
|
||||||
alumno = Alumno(codigo, "nip_incorrecto")
|
alumno = Alumno(codigo, "nip_incorrecto")
|
||||||
|
@ -24,4 +23,3 @@ if alumno.valido:
|
||||||
else:
|
else:
|
||||||
print "Codigo o nip incorrectos"
|
print "Codigo o nip incorrectos"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
477
libSIIAU.py
477
libSIIAU.py
|
@ -1,477 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# libSIIAU.py
|
|
||||||
#
|
|
||||||
# Copyright 2017 ImNotRoot <https://github.com/ImNotRoot>
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
|
||||||
# MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
#from commands import getoutput, getstatusoutput
|
|
||||||
from requests import get, post
|
|
||||||
|
|
||||||
import sys, time, os
|
|
||||||
|
|
||||||
class AuthenticationError(BaseException):
|
|
||||||
def __init__(self, message):
|
|
||||||
self.message = message
|
|
||||||
super(AuthenticationError, self).__init__(message)
|
|
||||||
|
|
||||||
class Alumno:
|
|
||||||
__UA="User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36"
|
|
||||||
__URL="http://siiauescolar.siiau.udg.mx"
|
|
||||||
|
|
||||||
__headers = {
|
|
||||||
'User-Agent': __UA,
|
|
||||||
}
|
|
||||||
|
|
||||||
__COOKIES=""
|
|
||||||
__majrp=""
|
|
||||||
|
|
||||||
codigo=""
|
|
||||||
nip=""
|
|
||||||
nombre=""
|
|
||||||
items=[]
|
|
||||||
carreras=[]
|
|
||||||
valido=True
|
|
||||||
|
|
||||||
pidm=""
|
|
||||||
|
|
||||||
def __getCarreras(self,url):
|
|
||||||
#cmd="curl -L -b cookies.txt -i -A '"+self.__UA+"' -X GET '"+self.__URL+""+url+"'"
|
|
||||||
r=get(self.__URL+""+url,headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
#out=getoutput(cmd)
|
|
||||||
out=r.text
|
|
||||||
if("OPTION" in out):
|
|
||||||
cab='<OPTION value="'
|
|
||||||
while(cab in out):
|
|
||||||
temp=""
|
|
||||||
val1=""
|
|
||||||
val2=""
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
temp=out[:out.find('"')]
|
|
||||||
val1=temp[:temp.find("-")]
|
|
||||||
val2=temp[temp.find("-")+1:]
|
|
||||||
temp={"carrera":val1,"inicio":val2}
|
|
||||||
self.items.append(temp)
|
|
||||||
else:
|
|
||||||
self.items.append(None)
|
|
||||||
self.__getInfoBasica()
|
|
||||||
|
|
||||||
def __getLink(self):
|
|
||||||
#cmd="curl -L -b cookies.txt -i -A '"+self.__UA+"' -X GET siiauescolar.siiau.udg.mx/wus/gupmenug.menu_sistema?p_pidm_n="+str(self.pidm)
|
|
||||||
r=get("http://siiauescolar.siiau.udg.mx/wus/gupmenug.menu_sistema?p_pidm_n="+str(self.pidm),headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
out=r.text
|
|
||||||
#out=getoutput(cmd)
|
|
||||||
grado=""
|
|
||||||
flag=True
|
|
||||||
cab='<img src="/ows-img/closed.gif" alt="'
|
|
||||||
cab2='<a href="'
|
|
||||||
while(cab in out and flag):
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
grado=out[:out.find('"')]
|
|
||||||
out=out[out.find(cab2)+len(cab2):]
|
|
||||||
link=out[:out.find('"')]
|
|
||||||
#print link
|
|
||||||
if(" " not in link):
|
|
||||||
#print link
|
|
||||||
flag=False
|
|
||||||
self.__getCarreras(link)
|
|
||||||
if(flag):
|
|
||||||
self.items.append(None)
|
|
||||||
self.__getInfoBasica();
|
|
||||||
#print "Por el momento el API no soporta la extracción de datos para alumnos solamente con preparatoria"
|
|
||||||
|
|
||||||
def __getPidm(self,text):
|
|
||||||
cab='p_bienvenida_c" VALUE="'
|
|
||||||
text=text[text.find(cab)+len(cab):]
|
|
||||||
text=text[:text.find('"')]
|
|
||||||
self.pidm=text
|
|
||||||
#print text
|
|
||||||
|
|
||||||
def __getInfoBasica(self):
|
|
||||||
encuesta=False
|
|
||||||
for info in self.items:
|
|
||||||
if(info==None):
|
|
||||||
#cmd="curl -L -b cookies.txt -i -A '"+self.__UA+"' -X GET 'siiauescolar.siiau.udg.mx/wal/sgphist.ficha?pidmp="+self.pidm+"'"
|
|
||||||
r=get("http://siiauescolar.siiau.udg.mx/wal/sgphist.promedio?pidmp="+self.pidm,headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
else:
|
|
||||||
#cmd="curl -L -b cookies.txt -i -A '"+self.__UA+"' -X GET 'siiauescolar.siiau.udg.mx/wal/sgphist.ficha?pidmp="+self.pidm+"&majrp="+info["carrera"]+"&cicloap="+info["inicio"]+"'"
|
|
||||||
r=get("http://siiauescolar.siiau.udg.mx/wal/sgphist.promedio?pidmp="+self.pidm+"&majrp="+info["carrera"]+"&cicloap="+info["inicio"],headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
#out=getoutput(cmd)
|
|
||||||
out=r.text
|
|
||||||
if("Encuestas</b>" in out):
|
|
||||||
encuesta=True
|
|
||||||
#print("Favor de contestar todas las encuestas para poder continuar")
|
|
||||||
else:
|
|
||||||
#print out
|
|
||||||
out=out[out.find("Nombre:"):]
|
|
||||||
out=out[out.find("<FONT"):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
self.nombre=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find("Situaci"):]
|
|
||||||
out=out[out.find("<FONT"):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
situacion=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find("Carrera:"):]
|
|
||||||
out=out[out.find("<FONT"):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
carrera=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
self.__majrp=carrera[carrera.find("(")+1:carrera.find(")")]
|
|
||||||
|
|
||||||
out=out[out.find("Centro:"):]
|
|
||||||
out=out[out.find("<FONT"):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
centro=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find("Sede:"):]
|
|
||||||
out=out[out.find("<FONT"):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
sede=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find("PROMEDIO"):]
|
|
||||||
out=out[out.find("<FONT"):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
promedio=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
self.carreras.append({"carrera":carrera,"centro":centro,"sede":sede,"situacion":situacion,"promedio":promedio})
|
|
||||||
#print self.carreras
|
|
||||||
if(not encuesta):
|
|
||||||
self.__getKardex()
|
|
||||||
|
|
||||||
def __getKardex(self):
|
|
||||||
cont=0
|
|
||||||
encuesta=False
|
|
||||||
for info in self.items:
|
|
||||||
if(info == None):
|
|
||||||
r=get("http://siiauescolar.siiau.udg.mx/wal/sgphist.kardex?pidmp="+self.pidm+"&majrp="+self.__majrp,headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
else:
|
|
||||||
#r=get("http://siiauescolar.siiau.udg.mx/wal/sgphist.kardex?pidmp=891060&majrp=INNI&cicloap=201420",cookies=self.__COOKIES)
|
|
||||||
r=get("http://siiauescolar.siiau.udg.mx/wal/sgphist.kardex?pidmp="+self.pidm+"&majrp="+info["carrera"]+"&cicloap="+info["inicio"],headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
out=r.text
|
|
||||||
materias=[]
|
|
||||||
if("Encuestas</b>" in out):
|
|
||||||
encuesta=True
|
|
||||||
#print("Favor de contestar todas las encuestas para poder continuar")
|
|
||||||
else:
|
|
||||||
'''
|
|
||||||
cab="Calendario "
|
|
||||||
cab2="</FONT>"
|
|
||||||
'''
|
|
||||||
|
|
||||||
cab='<TR bgcolor="#ffffff">'
|
|
||||||
cab2="<A HREF="
|
|
||||||
cab3="<FONT "
|
|
||||||
cab4='<TD COLSPAN="3"></TD>'
|
|
||||||
#print out
|
|
||||||
while(cab in out):
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
aprobado=True
|
|
||||||
#print out.find(cab4)
|
|
||||||
if(out.find(cab4)!=1):
|
|
||||||
out=out[out.find(cab2)+len(cab2):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
nrc=out[:out.find("</A>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab2)+len(cab2):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
clave=out[:out.find("</A>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab3)+len(cab3):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
materia=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab3)+len(cab3):]
|
|
||||||
if(out.find('COLOR="red"')==0):
|
|
||||||
aprobado=False
|
|
||||||
#print "reprobado"
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
calificacion=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab3)+len(cab3):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
tipo=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab3)+len(cab3):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
nc=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab3)+len(cab3):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
fecha=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
materias.append({"nrc":nrc,"clave":clave,"materia":materia,"calificacion":calificacion,"aprobado":aprobado,"tipo":tipo,"nc":nc,"fecha":fecha})
|
|
||||||
#print nrc,clave,materia,calificacion,tipo,nc,fecha
|
|
||||||
'''
|
|
||||||
out=out[out.find(cab):]
|
|
||||||
print out[:out.find(cab2)]
|
|
||||||
out=out[out.find(cab2)+len(cab2):]
|
|
||||||
'''
|
|
||||||
self.carreras[cont]["kardex"]=materias
|
|
||||||
cont=cont+1
|
|
||||||
if(not encuesta):
|
|
||||||
self.__getActuales()
|
|
||||||
#print self.carreras
|
|
||||||
|
|
||||||
def __getActuales(self):
|
|
||||||
cont=0
|
|
||||||
encuesta=False
|
|
||||||
for info in self.items:
|
|
||||||
if(info == None):
|
|
||||||
r=get("http://siiauescolar.siiau.udg.mx/wal/sgpregi.horario?pidmp="+self.pidm+"&majrp="+self.__majrp,headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
else:
|
|
||||||
#r=get("http://siiauescolar.siiau.udg.mx/wal/sgphist.kardex?pidmp=891060&majrp=INNI&cicloap=201420",cookies=self.__COOKIES)
|
|
||||||
r=get("http://siiauescolar.siiau.udg.mx/wal/sgpregi.horario?pidmp="+self.pidm+"&majrp="+info["carrera"],headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
out=r.text
|
|
||||||
#print out
|
|
||||||
if("Encuestas</b>" in out):
|
|
||||||
encuesta=True
|
|
||||||
#print("Favor de contestar todas las encuestas para poder continuar")
|
|
||||||
else:
|
|
||||||
#print out
|
|
||||||
cab='<SELECT NAME="pCiclo"'
|
|
||||||
if(cab in out):
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
cab=" value='"
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
ciclo=out[:out.find("'")]
|
|
||||||
params={"pidmP":self.pidm,"cicloP":ciclo,"encaP":"0"}
|
|
||||||
if(info!=None):
|
|
||||||
params["majrP"]=info["carrera"]
|
|
||||||
else:
|
|
||||||
params["majrP"]=self.__majrp
|
|
||||||
#print ciclo
|
|
||||||
r=post("http://siiauescolar.siiau.udg.mx/wal/sfpcoal.horario",headers=self.__headers,data=params)
|
|
||||||
out=r.text
|
|
||||||
out=out[out.find("FECHA FIN"):]
|
|
||||||
|
|
||||||
materias=[]
|
|
||||||
|
|
||||||
cab='<TR bgcolor="#'
|
|
||||||
cab2='<TR bgcolor="#FFFFFF">'
|
|
||||||
cab3='<TR bgcolor="#e5e5e5">'
|
|
||||||
cab4='<TD COLSPAN="5">'
|
|
||||||
cab5='<TD>'
|
|
||||||
while(cab2 in out or cab3 in out):
|
|
||||||
out=out[out.find(cab):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
if(out.find(cab4) != 1):
|
|
||||||
out=out[out.find(cab5)+len(cab5):]
|
|
||||||
nrc=out[:out.find("</TD>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab5)+len(cab5):]
|
|
||||||
clave=out[:out.find("</TD>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab5)+len(cab5):]
|
|
||||||
materia=out[:out.find("</TD>")]
|
|
||||||
|
|
||||||
materias.append({"nrc":nrc,"clave":clave,"materia":materia})
|
|
||||||
#print nrc,clave,materia
|
|
||||||
self.carreras[cont]["materias_actuales"]=materias
|
|
||||||
else:
|
|
||||||
self.carreras[cont]["materias_actuales"]=[]
|
|
||||||
cont=cont+1
|
|
||||||
if(not encuesta):
|
|
||||||
self.valido=True
|
|
||||||
|
|
||||||
'''
|
|
||||||
materias=[]
|
|
||||||
cab='<TR bgcolor="'
|
|
||||||
cab2="<FONT "
|
|
||||||
print "Si entre aqui"
|
|
||||||
print out
|
|
||||||
while(cab in out):
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
|
|
||||||
out=out[out.find(cab2)+len(cab2):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
nrc=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab2)+len(cab2):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
clave=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab2)+len(cab2):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
materia=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab2)+len(cab2):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
creditos=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
materias.append({"nrc":nrc,"clave":clave,"materia":materia,"creditos":creditos})
|
|
||||||
print nrc,clave,materia,creditos
|
|
||||||
self.carreras[cont]["materias_actuales"]=materias
|
|
||||||
print self.carreras[cont]["materias_actuales"]
|
|
||||||
cont=cont+1
|
|
||||||
self.valido=True
|
|
||||||
#print self.carreras[cont]
|
|
||||||
#print "\n\n=====================================================\n\n"'''
|
|
||||||
|
|
||||||
def __init__(self,codigo,nip):
|
|
||||||
#print "Creando el objeto"
|
|
||||||
self.codigo=""
|
|
||||||
self.nip=""
|
|
||||||
self.nombre=""
|
|
||||||
self.items=[]
|
|
||||||
self.carreras=[]
|
|
||||||
valido=False
|
|
||||||
#print "ehrkjerjkergjergjk"
|
|
||||||
pidm=""
|
|
||||||
self.codigo=codigo
|
|
||||||
self.nip=nip
|
|
||||||
#cmd="curl -c cookies.txt -i -A '"+self.__UA+"' -X POST -d 'p_codigo_c="+str(codigo)+"&p_clave_c="+str(nip)+"' siiauescolar.siiau.udg.mx/wus/gupprincipal.valida_inicio"
|
|
||||||
params={"p_codigo_c":str(codigo),"p_clave_c":str(nip)}
|
|
||||||
r=post("http://siiauescolar.siiau.udg.mx/wus/gupprincipal.valida_inicio",headers=self.__headers,data=params)
|
|
||||||
out=r.text
|
|
||||||
#out=getoutput(cmd)
|
|
||||||
if('class="error"' not in out):
|
|
||||||
#print "la clave y el nip son correctos"
|
|
||||||
self.__COOKIES=r.cookies
|
|
||||||
self.__getPidm(out)
|
|
||||||
self.__getLink()
|
|
||||||
#print self.carreras
|
|
||||||
#getoutput("rm cookies.txt")
|
|
||||||
else:
|
|
||||||
self.valido=False
|
|
||||||
#print "Los datos ingresados no son correctos"
|
|
||||||
|
|
||||||
class Profesor():
|
|
||||||
|
|
||||||
__COOKIES=""
|
|
||||||
|
|
||||||
__headers = {
|
|
||||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36',
|
|
||||||
}
|
|
||||||
|
|
||||||
pidm=""
|
|
||||||
codigo=""
|
|
||||||
nip=""
|
|
||||||
nombre=""
|
|
||||||
materias=[]
|
|
||||||
|
|
||||||
valido=True
|
|
||||||
|
|
||||||
def __getLink(self):
|
|
||||||
#cmd="curl -L -b cookies.txt -i -A '"+self.__UA+"' -X GET siiauescolar.siiau.udg.mx/wus/gupmenug.menu_sistema?p_pidm_n="+str(self.pidm)
|
|
||||||
r=get("http://siiauescolar.siiau.udg.mx/wus/gupmenug.menu_sistema?p_pidm_n="+str(self.pidm),headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
out=r.text
|
|
||||||
#out=getoutput(cmd)
|
|
||||||
grado=""
|
|
||||||
flag=True
|
|
||||||
cab='<img src="/ows-img/closed.gif" alt="'
|
|
||||||
cab2='<a href="'
|
|
||||||
while(cab in out and flag):
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
grado=out[:out.find('"')]
|
|
||||||
out=out[out.find(cab2)+len(cab2):]
|
|
||||||
link=out[:out.find('"')]
|
|
||||||
#print link
|
|
||||||
if(" " not in link):
|
|
||||||
#print link
|
|
||||||
flag=False
|
|
||||||
self.__getCarreras(link)
|
|
||||||
if(flag):
|
|
||||||
self.items.append(None)
|
|
||||||
self.__getInfoBasica();
|
|
||||||
|
|
||||||
def __getPidm(self,text):
|
|
||||||
cab='p_bienvenida_c" VALUE="'
|
|
||||||
text=text[text.find(cab)+len(cab):]
|
|
||||||
text=text[:text.find('"')]
|
|
||||||
self.pidm=text
|
|
||||||
#print text
|
|
||||||
|
|
||||||
def __getInfoBasica(self):
|
|
||||||
#print "aqui"
|
|
||||||
r=get("http://siiauescolar.siiau.udg.mx/wpr/sipprac.lista_prof?pidmp="+self.pidm,headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
out=r.text
|
|
||||||
|
|
||||||
cab="<FONT "
|
|
||||||
|
|
||||||
out=out[out.find("Nombre :"):]
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
self.nombre=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
cab='<FONT COLOR="navy" FACE="arial" SIZE="2">'
|
|
||||||
|
|
||||||
while(cab in out):
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
ciclo=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
nrc=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
clave=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
nombre=out[:out.find("</FONT>")]
|
|
||||||
|
|
||||||
self.materias.append({"ciclo":ciclo,"nrc":nrc,"clave":clave,"nombre":nombre})
|
|
||||||
r=get("http://siiauescolar.siiau.udg.mx/wpr/silprac.asistencias_profesor",headers=self.__headers,cookies=self.__COOKIES)
|
|
||||||
out=r.text
|
|
||||||
cab='<TD style="font-family:arial;font-size:12;background-color:#ffffff;">'
|
|
||||||
cab2='<A HREF='
|
|
||||||
while(cab in out):
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
ciclo=out[:out.find("</TD>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
nrc=out[:out.find("</TD>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab2)+len(cab2):]
|
|
||||||
out=out[out.find(">")+1:]
|
|
||||||
clave=out[:out.find("</A>")]
|
|
||||||
|
|
||||||
out=out[out.find(cab)+len(cab):]
|
|
||||||
nombre=out[:out.find("</TD>")]
|
|
||||||
|
|
||||||
out=out[out.find("<TR>"):]
|
|
||||||
|
|
||||||
self.materias.append({"ciclo":ciclo,"nrc":nrc,"clave":clave,"nombre":nombre})
|
|
||||||
|
|
||||||
self.valido=True
|
|
||||||
#print self.materias
|
|
||||||
|
|
||||||
def __init__(self,codigo,nip):
|
|
||||||
self.pidm=""
|
|
||||||
self.nombre=""
|
|
||||||
self.materias=[]
|
|
||||||
#print "Creando el objeto"
|
|
||||||
self.codigo=codigo
|
|
||||||
self.nip=nip
|
|
||||||
#cmd="curl -c cookies.txt -i -A '"+self.__UA+"' -X POST -d 'p_codigo_c="+str(codigo)+"&p_clave_c="+str(nip)+"' siiauescolar.siiau.udg.mx/wus/gupprincipal.valida_inicio"
|
|
||||||
params={"p_codigo_c":str(codigo),"p_clave_c":str(nip)}
|
|
||||||
r=post("http://siiauescolar.siiau.udg.mx/wus/gupprincipal.valida_inicio",headers=self.__headers,data=params)
|
|
||||||
out=r.text
|
|
||||||
#out=getoutput(cmd)
|
|
||||||
if('class="error"' not in out):
|
|
||||||
#print "la clave y el nip son correctos"
|
|
||||||
self.__COOKIES=r.cookies
|
|
||||||
self.__getPidm(out)
|
|
||||||
self.__getInfoBasica()
|
|
||||||
#print self.carreras
|
|
||||||
#getoutput("rm cookies.txt")
|
|
||||||
else:
|
|
||||||
self.valido=False
|
|
||||||
#print "Los datos ingresados no son correctos"
|
|
|
@ -0,0 +1 @@
|
||||||
|
from lib_siiau.libSIIAU import *
|
|
@ -0,0 +1,524 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# libSIIAU.py
|
||||||
|
#
|
||||||
|
# Copyright 2019 ImNotRoot <https://github.com/kirbylife>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
# MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
|
from requests import get, post
|
||||||
|
|
||||||
|
|
||||||
|
class AuthenticationError(BaseException):
|
||||||
|
def __init__(self, message):
|
||||||
|
self.message = message
|
||||||
|
super(AuthenticationError, self).__init__(message)
|
||||||
|
|
||||||
|
|
||||||
|
class Alumno:
|
||||||
|
__UA = "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36"
|
||||||
|
__URL = "http://siiauescolar.siiau.udg.mx"
|
||||||
|
|
||||||
|
__headers = {
|
||||||
|
'User-Agent': __UA,
|
||||||
|
}
|
||||||
|
|
||||||
|
__COOKIES = ""
|
||||||
|
__majrp = ""
|
||||||
|
|
||||||
|
codigo = ""
|
||||||
|
nip = ""
|
||||||
|
nombre = ""
|
||||||
|
items = []
|
||||||
|
carreras = []
|
||||||
|
valido = True
|
||||||
|
|
||||||
|
pidm = ""
|
||||||
|
|
||||||
|
def __getCarreras(self, url):
|
||||||
|
r = get(self.__URL + "" + url,
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
out = r.text
|
||||||
|
if ("OPTION" in out):
|
||||||
|
cab = '<OPTION value="'
|
||||||
|
while (cab in out):
|
||||||
|
temp = ""
|
||||||
|
val1 = ""
|
||||||
|
val2 = ""
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
temp = out[:out.find('"')]
|
||||||
|
val1 = temp[:temp.find("-")]
|
||||||
|
val2 = temp[temp.find("-") + 1:]
|
||||||
|
temp = {"carrera": val1, "inicio": val2}
|
||||||
|
self.items.append(temp)
|
||||||
|
else:
|
||||||
|
self.items.append(None)
|
||||||
|
self.__getInfoBasica()
|
||||||
|
|
||||||
|
def __getLink(self):
|
||||||
|
r = get(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wus/gupmenug.menu_sistema?p_pidm_n="
|
||||||
|
+ str(self.pidm),
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
out = r.text
|
||||||
|
grado = ""
|
||||||
|
flag = True
|
||||||
|
cab = '<img src="/ows-img/closed.gif" alt="'
|
||||||
|
cab2 = '<a href="'
|
||||||
|
while (cab in out and flag):
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
grado = out[:out.find('"')]
|
||||||
|
out = out[out.find(cab2) + len(cab2):]
|
||||||
|
link = out[:out.find('"')]
|
||||||
|
if (" " not in link):
|
||||||
|
flag = False
|
||||||
|
self.__getCarreras(link)
|
||||||
|
if (flag):
|
||||||
|
self.items.append(None)
|
||||||
|
self.__getInfoBasica()
|
||||||
|
|
||||||
|
def __getPidm(self, text):
|
||||||
|
cab = 'p_bienvenida_c" VALUE="'
|
||||||
|
text = text[text.find(cab) + len(cab):]
|
||||||
|
text = text[:text.find('"')]
|
||||||
|
self.pidm = text
|
||||||
|
|
||||||
|
def __getInfoBasica(self):
|
||||||
|
encuesta = False
|
||||||
|
for info in self.items:
|
||||||
|
if (info == None):
|
||||||
|
r = get(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wal/sgphist.promedio?pidmp="
|
||||||
|
+ self.pidm,
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
else:
|
||||||
|
r = get(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wal/sgphist.promedio?pidmp="
|
||||||
|
+ self.pidm + "&majrp=" + info["carrera"] + "&cicloap=" +
|
||||||
|
info["inicio"],
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
out = r.text
|
||||||
|
if ("Encuestas</b>" in out):
|
||||||
|
encuesta = True
|
||||||
|
else:
|
||||||
|
out = out[out.find("Nombre:"):]
|
||||||
|
out = out[out.find("<FONT"):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
self.nombre = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find("Situaci"):]
|
||||||
|
out = out[out.find("<FONT"):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
situacion = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find("Carrera:"):]
|
||||||
|
out = out[out.find("<FONT"):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
carrera = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
self.__majrp = carrera[carrera.find("(") + 1:carrera.find(")")]
|
||||||
|
|
||||||
|
out = out[out.find("Centro:"):]
|
||||||
|
out = out[out.find("<FONT"):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
centro = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find("Sede:"):]
|
||||||
|
out = out[out.find("<FONT"):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
sede = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find("PROMEDIO"):]
|
||||||
|
out = out[out.find("<FONT"):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
promedio = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
self.carreras.append({
|
||||||
|
"carrera": carrera,
|
||||||
|
"centro": centro,
|
||||||
|
"sede": sede,
|
||||||
|
"situacion": situacion,
|
||||||
|
"promedio": promedio
|
||||||
|
})
|
||||||
|
if (not encuesta):
|
||||||
|
self.__getKardex()
|
||||||
|
|
||||||
|
def __getKardex(self):
|
||||||
|
cont = 0
|
||||||
|
encuesta = False
|
||||||
|
for info in self.items:
|
||||||
|
if (info == None):
|
||||||
|
r = get(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wal/sgphist.kardex?pidmp="
|
||||||
|
+ self.pidm + "&majrp=" + self.__majrp,
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
else:
|
||||||
|
#r=get("http://siiauescolar.siiau.udg.mx/wal/sgphist.kardex?pidmp=891060&majrp=INNI&cicloap=201420",cookies=self.__COOKIES)
|
||||||
|
r = get(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wal/sgphist.kardex?pidmp="
|
||||||
|
+ self.pidm + "&majrp=" + info["carrera"] + "&cicloap=" +
|
||||||
|
info["inicio"],
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
out = r.text
|
||||||
|
materias = []
|
||||||
|
if ("Encuestas</b>" in out):
|
||||||
|
encuesta = True
|
||||||
|
else:
|
||||||
|
'''
|
||||||
|
cab="Calendario "
|
||||||
|
cab2="</FONT>"
|
||||||
|
'''
|
||||||
|
|
||||||
|
cab = '<TR bgcolor="#ffffff">'
|
||||||
|
cab2 = "<A HREF="
|
||||||
|
cab3 = "<FONT "
|
||||||
|
cab4 = '<TD COLSPAN="3"></TD>'
|
||||||
|
while (cab in out):
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
aprobado = True
|
||||||
|
if (out.find(cab4) != 1):
|
||||||
|
out = out[out.find(cab2) + len(cab2):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
nrc = out[:out.find("</A>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab2) + len(cab2):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
clave = out[:out.find("</A>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab3) + len(cab3):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
materia = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab3) + len(cab3):]
|
||||||
|
if (out.find('COLOR="red"') == 0):
|
||||||
|
aprobado = False
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
calificacion = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab3) + len(cab3):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
tipo = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab3) + len(cab3):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
nc = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab3) + len(cab3):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
fecha = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
materias.append({
|
||||||
|
"nrc": nrc,
|
||||||
|
"clave": clave,
|
||||||
|
"materia": materia,
|
||||||
|
"calificacion": calificacion,
|
||||||
|
"aprobado": aprobado,
|
||||||
|
"tipo": tipo,
|
||||||
|
"nc": nc,
|
||||||
|
"fecha": fecha
|
||||||
|
})
|
||||||
|
'''
|
||||||
|
out=out[out.find(cab):]
|
||||||
|
print out[:out.find(cab2)]
|
||||||
|
out=out[out.find(cab2)+len(cab2):]
|
||||||
|
'''
|
||||||
|
self.carreras[cont]["kardex"] = materias
|
||||||
|
cont = cont + 1
|
||||||
|
if (not encuesta):
|
||||||
|
self.__getActuales()
|
||||||
|
|
||||||
|
def __getActuales(self):
|
||||||
|
cont = 0
|
||||||
|
encuesta = False
|
||||||
|
for info in self.items:
|
||||||
|
if (info == None):
|
||||||
|
r = get(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wal/sgpregi.horario?pidmp="
|
||||||
|
+ self.pidm + "&majrp=" + self.__majrp,
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
else:
|
||||||
|
r = get(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wal/sgpregi.horario?pidmp="
|
||||||
|
+ self.pidm + "&majrp=" + info["carrera"],
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
out = r.text
|
||||||
|
if ("Encuestas</b>" in out):
|
||||||
|
encuesta = True
|
||||||
|
else:
|
||||||
|
cab = '<SELECT NAME="pCiclo"'
|
||||||
|
if (cab in out):
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
cab = " value='"
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
ciclo = out[:out.find("'")]
|
||||||
|
params = {
|
||||||
|
"pidmP": self.pidm,
|
||||||
|
"cicloP": ciclo,
|
||||||
|
"encaP": "0"
|
||||||
|
}
|
||||||
|
if (info != None):
|
||||||
|
params["majrP"] = info["carrera"]
|
||||||
|
else:
|
||||||
|
params["majrP"] = self.__majrp
|
||||||
|
r = post(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wal/sfpcoal.horario",
|
||||||
|
headers=self.__headers,
|
||||||
|
data=params)
|
||||||
|
out = r.text
|
||||||
|
out = out[out.find("FECHA FIN"):]
|
||||||
|
|
||||||
|
materias = []
|
||||||
|
|
||||||
|
cab = '<TR bgcolor="#'
|
||||||
|
cab2 = '<TR bgcolor="#FFFFFF">'
|
||||||
|
cab3 = '<TR bgcolor="#e5e5e5">'
|
||||||
|
cab4 = '<TD COLSPAN="5">'
|
||||||
|
cab5 = '<TD>'
|
||||||
|
while (cab2 in out or cab3 in out):
|
||||||
|
out = out[out.find(cab):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
if (out.find(cab4) != 1):
|
||||||
|
out = out[out.find(cab5) + len(cab5):]
|
||||||
|
nrc = out[:out.find("</TD>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab5) + len(cab5):]
|
||||||
|
clave = out[:out.find("</TD>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab5) + len(cab5):]
|
||||||
|
materia = out[:out.find("</TD>")]
|
||||||
|
|
||||||
|
materias.append({
|
||||||
|
"nrc": nrc,
|
||||||
|
"clave": clave,
|
||||||
|
"materia": materia
|
||||||
|
})
|
||||||
|
self.carreras[cont]["materias_actuales"] = materias
|
||||||
|
else:
|
||||||
|
self.carreras[cont]["materias_actuales"] = []
|
||||||
|
cont = cont + 1
|
||||||
|
if (not encuesta):
|
||||||
|
self.valido = True
|
||||||
|
'''
|
||||||
|
materias=[]
|
||||||
|
cab='<TR bgcolor="'
|
||||||
|
cab2="<FONT "
|
||||||
|
print "Si entre aqui"
|
||||||
|
print out
|
||||||
|
while(cab in out):
|
||||||
|
out=out[out.find(cab)+len(cab):]
|
||||||
|
|
||||||
|
out=out[out.find(cab2)+len(cab2):]
|
||||||
|
out=out[out.find(">")+1:]
|
||||||
|
nrc=out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out=out[out.find(cab2)+len(cab2):]
|
||||||
|
out=out[out.find(">")+1:]
|
||||||
|
clave=out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out=out[out.find(cab2)+len(cab2):]
|
||||||
|
out=out[out.find(">")+1:]
|
||||||
|
materia=out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out=out[out.find(cab2)+len(cab2):]
|
||||||
|
out=out[out.find(">")+1:]
|
||||||
|
creditos=out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
materias.append({"nrc":nrc,"clave":clave,"materia":materia,"creditos":creditos})
|
||||||
|
print nrc,clave,materia,creditos
|
||||||
|
self.carreras[cont]["materias_actuales"]=materias
|
||||||
|
print self.carreras[cont]["materias_actuales"]
|
||||||
|
cont=cont+1
|
||||||
|
self.valido=True
|
||||||
|
#print self.carreras[cont]
|
||||||
|
#print "\n\n=====================================================\n\n"'''
|
||||||
|
|
||||||
|
def __init__(self, codigo, nip):
|
||||||
|
self.codigo = ""
|
||||||
|
self.nip = ""
|
||||||
|
self.nombre = ""
|
||||||
|
self.items = []
|
||||||
|
self.carreras = []
|
||||||
|
valido = False
|
||||||
|
pidm = ""
|
||||||
|
self.codigo = codigo
|
||||||
|
self.nip = nip
|
||||||
|
params = {"p_codigo_c": str(codigo), "p_clave_c": str(nip)}
|
||||||
|
r = post(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wus/gupprincipal.valida_inicio",
|
||||||
|
headers=self.__headers,
|
||||||
|
data=params)
|
||||||
|
out = r.text
|
||||||
|
if ('class="error"' not in out):
|
||||||
|
self.__COOKIES = r.cookies
|
||||||
|
self.__getPidm(out)
|
||||||
|
self.__getLink()
|
||||||
|
else:
|
||||||
|
self.valido = False
|
||||||
|
|
||||||
|
|
||||||
|
class Profesor():
|
||||||
|
__COOKIES = ""
|
||||||
|
|
||||||
|
__headers = {
|
||||||
|
'User-Agent':
|
||||||
|
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36',
|
||||||
|
}
|
||||||
|
|
||||||
|
pidm = ""
|
||||||
|
codigo = ""
|
||||||
|
nip = ""
|
||||||
|
nombre = ""
|
||||||
|
materias = []
|
||||||
|
|
||||||
|
valido = True
|
||||||
|
|
||||||
|
def __getLink(self):
|
||||||
|
r = get(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wus/gupmenug.menu_sistema?p_pidm_n="
|
||||||
|
+ str(self.pidm),
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
out = r.text
|
||||||
|
grado = ""
|
||||||
|
flag = True
|
||||||
|
cab = '<img src="/ows-img/closed.gif" alt="'
|
||||||
|
cab2 = '<a href="'
|
||||||
|
while (cab in out and flag):
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
grado = out[:out.find('"')]
|
||||||
|
out = out[out.find(cab2) + len(cab2):]
|
||||||
|
link = out[:out.find('"')]
|
||||||
|
if (" " not in link):
|
||||||
|
flag = False
|
||||||
|
self.__getCarreras(link)
|
||||||
|
if (flag):
|
||||||
|
self.items.append(None)
|
||||||
|
self.__getInfoBasica()
|
||||||
|
|
||||||
|
def __getPidm(self, text):
|
||||||
|
cab = 'p_bienvenida_c" VALUE="'
|
||||||
|
text = text[text.find(cab) + len(cab):]
|
||||||
|
text = text[:text.find('"')]
|
||||||
|
self.pidm = text
|
||||||
|
|
||||||
|
def __getInfoBasica(self):
|
||||||
|
r = get(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wpr/sipprac.lista_prof?pidmp=" +
|
||||||
|
self.pidm,
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
out = r.text
|
||||||
|
|
||||||
|
cab = "<FONT "
|
||||||
|
|
||||||
|
out = out[out.find("Nombre :"):]
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
self.nombre = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
cab = '<FONT COLOR="navy" FACE="arial" SIZE="2">'
|
||||||
|
|
||||||
|
while (cab in out):
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
ciclo = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
nrc = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
clave = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
nombre = out[:out.find("</FONT>")]
|
||||||
|
|
||||||
|
self.materias.append({
|
||||||
|
"ciclo": ciclo,
|
||||||
|
"nrc": nrc,
|
||||||
|
"clave": clave,
|
||||||
|
"nombre": nombre
|
||||||
|
})
|
||||||
|
r = get(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wpr/silprac.asistencias_profesor",
|
||||||
|
headers=self.__headers,
|
||||||
|
cookies=self.__COOKIES)
|
||||||
|
out = r.text
|
||||||
|
cab = '<TD style="font-family:arial;font-size:12;background-color:#ffffff;">'
|
||||||
|
cab2 = '<A HREF='
|
||||||
|
while (cab in out):
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
ciclo = out[:out.find("</TD>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
nrc = out[:out.find("</TD>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab2) + len(cab2):]
|
||||||
|
out = out[out.find(">") + 1:]
|
||||||
|
clave = out[:out.find("</A>")]
|
||||||
|
|
||||||
|
out = out[out.find(cab) + len(cab):]
|
||||||
|
nombre = out[:out.find("</TD>")]
|
||||||
|
|
||||||
|
out = out[out.find("<TR>"):]
|
||||||
|
|
||||||
|
self.materias.append({
|
||||||
|
"ciclo": ciclo,
|
||||||
|
"nrc": nrc,
|
||||||
|
"clave": clave,
|
||||||
|
"nombre": nombre
|
||||||
|
})
|
||||||
|
|
||||||
|
self.valido = True
|
||||||
|
|
||||||
|
def __init__(self, codigo, nip):
|
||||||
|
self.pidm = ""
|
||||||
|
self.nombre = ""
|
||||||
|
self.materias = []
|
||||||
|
self.codigo = codigo
|
||||||
|
self.nip = nip
|
||||||
|
params = {"p_codigo_c": str(codigo), "p_clave_c": str(nip)}
|
||||||
|
r = post(
|
||||||
|
"http://siiauescolar.siiau.udg.mx/wus/gupprincipal.valida_inicio",
|
||||||
|
headers=self.__headers,
|
||||||
|
data=params)
|
||||||
|
out = r.text
|
||||||
|
if ('class="error"' not in out):
|
||||||
|
self.__COOKIES = r.cookies
|
||||||
|
self.__getPidm(out)
|
||||||
|
self.__getInfoBasica()
|
||||||
|
else:
|
||||||
|
self.valido = False
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
codigo = input("Ingresa tu código:\n> ")
|
||||||
|
nip = input("Ingresa tu NIP:\n> ")
|
||||||
|
alumno = Alumno(codigo, nip)
|
||||||
|
print(alumno.nombre)
|
|
@ -0,0 +1,15 @@
|
||||||
|
[tool.poetry]
|
||||||
|
name = "lib_siiau"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = "Extrae información de alumnos y profesores de la Universidad de Guadalajara"
|
||||||
|
authors = ["kirbylife <gabriel13m@gmail.com>"]
|
||||||
|
|
||||||
|
[tool.poetry.dependencies]
|
||||||
|
python = "^3.6"
|
||||||
|
requests = "^2.22"
|
||||||
|
|
||||||
|
[tool.poetry.dev-dependencies]
|
||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["poetry>=0.12"]
|
||||||
|
build-backend = "poetry.masonry.api"
|
Loading…
Reference in New Issue