#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Oct 15 19:56:21 2024

@author: ojacques

Arquivos no formato fppppp()eeMMMMMzzzzssss-tipo.dat
f: fase (s:simulado ou o:oficial ) ppppp:pleito com 0 à esquerda ee:sigla do estado
MMMMM: codigo municipio com 0 à esquerda zzzz: codigo da zona com 0 à esquerda
ssss: código da seção com 0 à esquerda tipo:bu, rdv,log, etc

A codificação é iso-8859-1
"""

import pandas as pd
import glob 
def relBu(Municipio,cand):
    caminho='/home/ojacques/Downloads/bu_imgbu_logjez_rdv_vscmr_2024_1t_MS/'
    lstUrnas=glob.glob(f'{caminho}o00452ms{Municipio}*-imgbu.dat')
       
    df=pd.read_excel('LOCAIS_VOTAÇÃO_MS_2024 - Google Drive.xls')
    totVotos=0
    votos=0
    dfRel=pd.DataFrame({"Zona":[],"Seção":[],"Local":[], "Votos": []})
    for arqUrna in lstUrnas:
        with open(arqUrna,'rb') as datUrna:
            #bnome=bytes('ÉCLAIR','iso-8859-1')
            #nome=bnome.decode(encoding='iso-8859-1')
            linhas=datUrna.read()
            strLinhas=linhas.decode(encoding='iso-8859-1')
            p=strLinhas.find(f' {cand} ')
            if p>0:
                votos=int(strLinhas[p+8:p+12])
                nomeCand=strLinhas[p-24:p+1]
                totVotos+=votos
                urna=arqUrna[-31:]
                #01234567890123456789012345678
                #o00452ms9073500430427-rdv.dat 
                zona=urna[13:17]    #número da zona na posição 13 do nome do arquivo da urna
                secao=urna[17:21]   #número da seção na posição 17 do nome do arquivo da urna
                locSec=df.loc[df['Seção']==int(secao)]
                local=list(locSec.loc[locSec['Zona']==int(zona)]['Local'])[0]
                dfRel=pd.concat([dfRel,pd.DataFrame({"Zona":[zona],"Seção":[secao],"Local":[local], "Votos": [votos]})])
      
    
    dfRelLoc=dfRel.groupby('Local')[['Votos']].sum()
    #temos a opção mode={'w','a'}, 'a' para append
    #with pd.ExcelWriter(f'RelatCandBU{cand}.xls',engine='xlwt') as wb:
    with pd.ExcelWriter(f'RelatCandBU{cand}.xls',engine='openpyxl') as wb:
        dfRel.to_excel(wb, sheet_name='Votos Por Seção',index=False)    
        dfRelLoc.to_excel(wb,sheet_name='Votos Por Local',float_format=None, header=True, index=True)
    print(f'{nomeCand}  {cand}  Total votos: {totVotos}')

import sys
#verifica se é chamado como programa, sem usar import
if __name__=='__main__':   #chamado como $ python relImgBu.py 90735 55455
    if len(sys.argv)==3:
        relBu(int(sys.argv[1]),int(sys.argv[2]))
    else:
        relBu(90735,55455)
        print("\nNumero de parâmetros inválido")
        print('Digite python relImgBu.py codMunicipio numCandidato')
        print('Exemplo: python relImgBu.py 90735 55455')
