# 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)