385 lines
17 KiB
Python
385 lines
17 KiB
Python
# coding: utf8
|
|
|
|
from libx import *
|
|
|
|
import win32clipboard
|
|
import pyautogui
|
|
import time
|
|
|
|
import os.path
|
|
|
|
|
|
SEMESTRE_ATUAL = "2022-1"
|
|
|
|
MONGO_ADDRESS = "localhost"
|
|
MONGO_PORT = 27017
|
|
MONGO_LINK = f"mongodb://{MONGO_ADDRESS}:{str(MONGO_PORT)}/?readPreference=primary"
|
|
|
|
|
|
CONNECT_DB = MongoClient(MONGO_LINK).get_database('connect')
|
|
|
|
PROFESSORES = CONNECT_DB.get_collection('professores')
|
|
MATRICULAS = CONNECT_DB.get_collection('matriculas')
|
|
DISCIPLINAS = CONNECT_DB.get_collection('disciplinas')
|
|
FOTOS = CONNECT_DB.get_collection('fotos')
|
|
CONTATOS = CONNECT_DB.get_collection('contatos')
|
|
|
|
MARCAS = CONNECT_DB.get_collection('marcas')
|
|
COMENTARIOS = CONNECT_DB.get_collection('comentarios')
|
|
|
|
def baixar_dados_dos_esutantes_do_academico(anos,destino):
|
|
#win32clipboard.OpenClipboard()
|
|
#notas = win32clipboard.GetClipboardData().split("\n")
|
|
#win32clipboard.CloseClipboard()
|
|
input("Pressione uma tecla para recomeçar....")
|
|
|
|
print("Posicione na caixa de busca:")
|
|
time.sleep(5)
|
|
caixa_busca = pyautogui.position()
|
|
print(caixa_busca)
|
|
|
|
print("Posicione no link para abrir o aluno")
|
|
time.sleep(5)
|
|
link_aluno = pyautogui.position()
|
|
print(link_aluno)
|
|
|
|
print("Posicione na foto do aluno")
|
|
time.sleep(5)
|
|
foto_aluno = pyautogui.position()
|
|
print(foto_aluno)
|
|
|
|
print("Posicione no botao fechar da aba aberta")
|
|
time.sleep(5)
|
|
fechar_aba = pyautogui.position()
|
|
|
|
print("Posicione sobre o bloco de notas")
|
|
time.sleep(5)
|
|
bloco_notas = pyautogui.position()
|
|
|
|
print("*"*1000)
|
|
time.sleep(2)
|
|
|
|
pyautogui.moveTo(fechar_aba)
|
|
pyautogui.click()
|
|
time.sleep(2)
|
|
|
|
#win32clipboard.OpenClipboard()
|
|
t = MATRICULAS.count()
|
|
n = 1
|
|
for aluno in MATRICULAS.find().sort("nome",1):
|
|
|
|
matricula = aluno["matricula"]
|
|
ano = matricula[0:4]
|
|
nome = aluno["nome"]
|
|
print(n,"/",t,nome,matricula,ano)
|
|
n+=1
|
|
|
|
if ano in anos:
|
|
if not (os.path.isfile(destino+matricula+".jpg") and os.path.isfile(destino+matricula+".txt")):
|
|
|
|
#
|
|
# busca estudante
|
|
#
|
|
pyautogui.moveTo(caixa_busca)
|
|
time.sleep(0.1)
|
|
pyautogui.click()
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('ctrl', 'a')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('del')
|
|
time.sleep(0.1)
|
|
pyautogui.write(matricula,0.01)
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('enter')
|
|
time.sleep(3)
|
|
pyautogui.moveTo(link_aluno)
|
|
time.sleep(0.1)
|
|
pyautogui.click()
|
|
time.sleep(2)
|
|
|
|
if not os.path.isfile(destino+matricula+'.jpg'):
|
|
pyautogui.moveTo(foto_aluno)
|
|
time.sleep(0.1)
|
|
pyautogui.click(button='right')
|
|
time.sleep(0.5)
|
|
pyautogui.hotkey('down')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('down')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('enter')
|
|
time.sleep(4)
|
|
pyautogui.write(destino+matricula+'.jpg',0.01)
|
|
pyautogui.hotkey('enter')
|
|
time.sleep(2)
|
|
|
|
if not os.path.isfile(destino+matricula+'.txt'):
|
|
|
|
pyautogui.moveTo(foto_aluno)
|
|
time.sleep(0.1)
|
|
pyautogui.click()
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('ctrl', 'a')
|
|
time.sleep(0.1)
|
|
pyautogui.click(button='right')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('down')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('down')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('down')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('down')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('down')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('down')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('down')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('enter')
|
|
time.sleep(1)
|
|
|
|
pyautogui.moveTo(bloco_notas)
|
|
time.sleep(0.1)
|
|
pyautogui.click()
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('ctrl', 'a')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('del')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('ctrl', 'v')
|
|
time.sleep(0.1)
|
|
pyautogui.hotkey('ctrl','shift', 's')
|
|
time.sleep(2)
|
|
pyautogui.write(destino+matricula+".txt",0.01)
|
|
pyautogui.hotkey('enter')
|
|
time.sleep(1)
|
|
|
|
pyautogui.moveTo(fechar_aba)
|
|
pyautogui.click()
|
|
time.sleep(1)
|
|
else:
|
|
print("pulando..."+matricula)
|
|
|
|
#win32clipboard.CloseClipboard()
|
|
def gerar_banco_professores(arquivo):
|
|
linhas = open (arquivo,"r").read().split("\n")
|
|
i = 0
|
|
for linha in linhas:
|
|
if "Visualizar" in linha:
|
|
nome = linhas[i+1].split("(")[0].strip()
|
|
email = linhas[i+2]
|
|
token = RANDON_CODES()[0]
|
|
PROFESSORES.update_one({"email":email},{"$set":{"nome":nome,"email":email,"token":token}},upsert = True)
|
|
|
|
i += 1
|
|
def gerar_banco_esudantes(arquivo,cursos,status):
|
|
linhas = open (arquivo,"r").read().split("\n")
|
|
lista_cursos = []
|
|
# 0 1 2 3 4 5 6 7 8 9 10 11 12
|
|
#Ingresso Curso Campus Polo Tipo Oferta Turno Matrícula RA Estudante CPF Data de Nascimento Idade Telefone Situação no curso Ações
|
|
for linha in linhas:
|
|
coluna = linha.split("\t")
|
|
if len(coluna)>5:
|
|
curso = coluna[1].split(" ")[-1]
|
|
turno = coluna[5]
|
|
matricula = coluna[6]
|
|
nome = coluna[8]
|
|
ALUNOS.update_one({"matricula":matricula},{"$set":{"nome":nome,"curso":curso,"turno":turno,"matricula":matricula}},upsert = True)
|
|
#for curso in lista_cursos:
|
|
# CURSOS.update_one({"nome":curso},{"$set":{"nome":curso}},upsert = True)
|
|
def completar_banco_esudantes(arquivo,cursos,status,destino,pasta_avatares):
|
|
linhas = open (arquivo,"r").read().split("\n")
|
|
lista_cursos = []
|
|
for linha in linhas:
|
|
coluna = linha.split("\t")
|
|
if len(coluna)>5:
|
|
|
|
matricula = coluna[6]
|
|
nome = coluna[8]
|
|
foto = ""
|
|
arquivo_jpg = destino+matricula+".jpg"
|
|
arquivo_txt = destino+matricula+".txt"
|
|
|
|
|
|
semestre = ""
|
|
genero = ""
|
|
if os.path.isfile(arquivo_txt):
|
|
ls = open(arquivo_txt,"r",encoding='UTF8').read().split("\n")
|
|
for l in ls:
|
|
c = l.split("\t")
|
|
if len(c)>1:
|
|
if c[0]=="Sexo:":
|
|
genero = c[1]
|
|
if genero == "Não declarado":
|
|
genero = ""
|
|
if c[0]=="Período Atual:":semestre = c[1]
|
|
|
|
if os.path.isfile(arquivo_jpg):
|
|
foto = "data:image/jpeg;base64," + base64.b64encode(open(arquivo_jpg, "rb").read()).decode('utf-8')
|
|
else:
|
|
if genero == "":
|
|
foto = "data:image/jpeg;base64," + base64.b64encode(open(pasta_avatares+"neutro.jpg", "rb").read()).decode('utf-8')
|
|
else:
|
|
foto = "data:image/png;base64," +base64.b64encode(open(pasta_avatares+genero+"_"+str(randint(1,7))+".png", "rb").read()).decode('utf-8')
|
|
print(matricula,nome,genero,semestre)
|
|
ALUNOS.update_one({"matricula":matricula},{"$set":{"genero":genero,"semestre":semestre,"foto":foto}},upsert = True)
|
|
def carregar_relatorio_de_matriculas_exportado(arquivo,destino,pasta_avatares):
|
|
|
|
FILTRO_CURSOS = {"035":"Agricultura","036":"Informática","299":"Agricultura","298":"Informática"}
|
|
FILTRO_TURNO = {"1":"Matutino","2":"Vespertino","3":"Noturno","4":"Integral"}
|
|
FILTRO_ANO = SEMESTRE_ATUAL.split("-")[0]
|
|
FITLRO_SEMESTRE = "1"
|
|
FILTRO_STATUS = ["Em curso"]
|
|
|
|
linhas = open (arquivo,"r",encoding='UTF8').read().split("\n")
|
|
lista_cursos = []
|
|
last_name = ""
|
|
|
|
filtro_turma_ab = []
|
|
|
|
for linha in linhas:
|
|
coluna = linha.split("\t")
|
|
if len(coluna) > 5:
|
|
|
|
#0 1 2 3 4 5 6 7 8 9 10 11 12 13
|
|
#ra estudante email cpf matricula status_aluno_curso status_aluno_classe curso classe unidade_curricular_id unidade_curricular codigo_unidade_curricular carga_horaria_unidade_curricular turma semestre periodo_letivo faltas presencas media data_fechamento
|
|
ra = coluna[0]
|
|
nome = coluna[1]
|
|
curso = coluna[7].split(" ")[-1]
|
|
matricula = coluna[4]
|
|
|
|
if curso in FILTRO_CURSOS.values():
|
|
classe = coluna[8].split("PP")[0]
|
|
# 1
|
|
#01234567890123
|
|
#20211036105APP - INF - EF15GEducação Física 5A
|
|
|
|
ano = classe[0:4]
|
|
ano_semestre= classe[4:5]
|
|
curso_cod = classe[5:8]
|
|
turno = FILTRO_TURNO[classe[8:9]]
|
|
semestre = str(int(classe[9:11]))
|
|
status = coluna[5]
|
|
disciplina = coluna[10]
|
|
|
|
turma = classe[-1]
|
|
|
|
telefone_residencial = ""
|
|
telefone_celular = ""
|
|
email_pessoal = ""
|
|
email_institucional = ""
|
|
|
|
if (curso_cod in FILTRO_CURSOS) and (status in FILTRO_STATUS):
|
|
curso = FILTRO_CURSOS[curso_cod]
|
|
|
|
if last_name != nome:
|
|
arquivo_txt = destino+matricula+".txt"
|
|
genero = ""
|
|
if os.path.isfile(arquivo_txt):
|
|
ls = open(arquivo_txt,"r",encoding='UTF8').readlines()
|
|
for l in ls:
|
|
c = l.replace("\t"," ").split(" ")
|
|
if len(c)>1:
|
|
if c[0]=="Sexo:":
|
|
genero = c[1]
|
|
if genero == "Não declarado":
|
|
genero = ""
|
|
if "Telefone residencial:" in l:
|
|
telefone_residencial = c[-1]
|
|
|
|
if "Telefone celular:" in l:
|
|
telefone_celular = l.replace("Telefone celular:","").replace(" ","")
|
|
|
|
if "Email institucional" in l:
|
|
email_institucional = l.replace("Email institucional: ","").replace(" ","")
|
|
|
|
if "Email pessoal:"in l:
|
|
email_pessoal = l.replace("Email pessoal:","").replace(" ","")
|
|
|
|
foto = ""
|
|
arquivo_jpg = destino+"\\"+matricula+".jpg"
|
|
#arquivo_jpg = destino+matricula+".jpg"
|
|
if os.path.isfile(arquivo_jpg):
|
|
foto = "data:image/jpeg;base64," + base64.b64encode(open(arquivo_jpg, "rb").read()).decode('utf-8')
|
|
else:
|
|
if genero == "":
|
|
foto = "data:image/jpeg;base64," + base64.b64encode(open(pasta_avatares+"neutro.jpg", "rb").read()).decode('utf-8')
|
|
else:
|
|
foto = "data:image/png;base64," +base64.b64encode(open(pasta_avatares+genero+"_"+str(randint(1,7))+".png", "rb").read()).decode('utf-8')
|
|
|
|
FOTOS.update_one({"matricula":matricula},{"$set":{"matricula":matricula,"foto":foto}},upsert = True)
|
|
CONTATOS.update_one({"matricula":matricula},{"$set":{
|
|
"telefones":telefone_residencial + ";"+telefone_celular,
|
|
"emails":email_institucional+ ";"+email_pessoal
|
|
}},upsert = True)
|
|
print(SEMESTRE_ATUAL,curso, semestre,turno, turma, nome,disciplina)
|
|
#print(telefone_residencial,ano,telefone_celular, email_institucional, email_pessoal)
|
|
|
|
last_name = nome
|
|
|
|
#if False:
|
|
DISCIPLINAS.update_one({"curso":curso,"semestre":semestre,"disciplina":disciplina},{"$set":{"curso":curso,"semestre":semestre,"disciplina":disciplina,"turma":turma}},upsert = True)
|
|
MATRICULAS.update_one({"matricula":matricula,"curso":curso,"semestre":semestre,"turno":turno,"disciplina":disciplina,"ano_sem":SEMESTRE_ATUAL},{"$set":{"matricula":matricula,"nome":nome,"disciplina":disciplina,"curso":curso,"semestre":semestre,"turno":turno,"turma":turma,"ano_sem":SEMESTRE_ATUAL}},upsert = True)
|
|
|
|
#MATRICULAS.update_one({"matricula":matricula,"curso":curso,"semestre":semestre,"turno":turno,"disciplina":disciplina},{"$set":{"turma":turma}})
|
|
|
|
for c in COMENTARIOS.find({"matricula":matricula,"curso":curso,"semestre":semestre,"turno":turno,"disciplina":disciplina,"ano_sem":SEMESTRE_ATUAL}):
|
|
COMENTARIOS.update_one(c,{"$set":{"turma":turma,"ano_sem":SEMESTRE_ATUAL}})
|
|
|
|
for c in MARCAS.find({"matricula":matricula,"curso":curso,"semestre":semestre,"turno":turno,"disciplina":disciplina,"ano_sem":SEMESTRE_ATUAL}):
|
|
MARCAS.update_one(c,{"$set":{"turma":turma,"ano_sem":SEMESTRE_ATUAL}})
|
|
|
|
def contar_genero(arquivo,cursos,status,destino,pasta_avatares):
|
|
linhas = open (arquivo,"r").read().split("\n")
|
|
lista_cursos = []
|
|
for linha in linhas:
|
|
coluna = linha.split("\t")
|
|
if len(coluna)>5:
|
|
|
|
matricula = coluna[6]
|
|
nome = coluna[8]
|
|
foto = ""
|
|
arquivo_jpg = destino+matricula+".jpg"
|
|
arquivo_txt = destino+matricula+".txt"
|
|
|
|
|
|
semestre = ""
|
|
genero = ""
|
|
if os.path.isfile(arquivo_txt):
|
|
ls = open(arquivo_txt,"r",encoding='UTF8').read().split("\n")
|
|
for l in ls:
|
|
c = l.split("\t")
|
|
if len(c)>1:
|
|
if c[0]=="Sexo:":
|
|
genero = c[1]
|
|
if genero == "Não declarado":
|
|
genero = ""
|
|
if c[0]=="Período Atual:":semestre = c[1]
|
|
|
|
if os.path.isfile(arquivo_jpg):
|
|
foto = "data:image/jpeg;base64," + base64.b64encode(open(arquivo_jpg, "rb").read()).decode('utf-8')
|
|
else:
|
|
if genero == "":
|
|
foto = "data:image/jpeg;base64," + base64.b64encode(open(pasta_avatares+"neutro.jpg", "rb").read()).decode('utf-8')
|
|
else:
|
|
foto = "data:image/png;base64," +base64.b64encode(open(pasta_avatares+genero+"_"+str(randint(1,7))+".png", "rb").read()).decode('utf-8')
|
|
print(matricula,nome,genero,semestre)
|
|
#ALUNOS.update_one({"matricula":matricula},{"$set":{"genero":genero,"semestre":semestre,"foto":foto}},upsert = True)
|
|
|
|
#----------------------------------------------------------------------------------------------------------------
|
|
|
|
#gerar_banco_esudantes("dados/lista_em_curso_2021.txt" ,["Técnico em Agricultura","Técnico em Informática"],["Em curso"])
|
|
#completar_banco_esudantes("dados/lista_em_curso_2021.txt" ,["Técnico em Agricultura","Técnico em Informática"],["Em curso"],"C:\\Users\\robson\\Desktop\\connect\\dados\\estudantes\\","C:\\Users\\robson\\Desktop\\connect\\dados\\avatares\\")
|
|
#baixar_dados_dos_esutantes_do_academico(["2018","2019","2020","2021","2022"],"C:\\Users\\USUARIO\\Desktop\\connect_2022_1\\dados\\estudantes\\")
|
|
|
|
#gerar_banco_professores("dados/lista_professores.txt" )
|
|
|
|
arquivo_exportado = "dados/relatorio_exportado_2022_1_cerel.txt"
|
|
pasta_estudantes = "C:\\Users\\USUARIO\\Desktop\\connect_2022_1\\dados\\estudantes\\"
|
|
pasta_avatares = "C:\\Users\\USUARIO\\Desktop\\connect_2022_1\\dados\\avatares\\"
|
|
|
|
#carregar_relatorio_de_matriculas_exportado(arquivo_exportado,pasta_estudantes,pasta_avatares)
|
|
|
|
|