ifms-conselho/carregar_bancos.py
2023-03-08 10:40:06 -04:00

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)