python-cartolafc icon indicating copy to clipboard operation
python-cartolafc copied to clipboard

Erro em api.time(id=) quando o tenico foi demitido

Open myoshiro opened this issue 4 years ago • 7 comments

Estou recenbendo o erro abaixo para api.time(id=25810384) pois o tecnico registrado foi demitido na ultima rodada e o time ainda nao foi escalado novamente.

Provavelmente o mesmo erro acontece quando um jogador eh transferido para outro pais e sai da base de dados do Cartola FC.


KeyError Traceback (most recent call last) in ----> 1 print(api.time(id=25810384))

C:\ProgramData\Anaconda3\lib\site-packages\cartolafc\api.py in time(self, id, nome, slug, as_json) 281 282 clubes = {clube['id']: Clube.from_dict(clube) for clube in data['clubes'].values()} --> 283 return Time.from_dict(data, clubes=clubes, capitao=data['capitao_id']) 284 285 def time_parcial(self, id=None, nome=None, slug=None, parciais=None):

C:\ProgramData\Anaconda3\lib\site-packages\cartolafc\models.py in from_dict(cls, data, clubes, capitao) 192 data['atletas'].sort(key=lambda a: a['posicao_id']) 193 atletas = [Atleta.from_dict(atleta, clubes, is_capitao=atleta['atleta_id'] == capitao) for atleta in --> 194 data['atletas']] 195 info = TimeInfo.from_dict(data['time']) 196 return cls(data['patrimonio'], data['valor_time'], data['pontos'], atletas, info)

C:\ProgramData\Anaconda3\lib\site-packages\cartolafc\models.py in (.0) 191 def from_dict(cls, data, clubes, capitao): 192 data['atletas'].sort(key=lambda a: a['posicao_id']) --> 193 atletas = [Atleta.from_dict(atleta, clubes, is_capitao=atleta['atleta_id'] == capitao) for atleta in 194 data['atletas']] 195 info = TimeInfo.from_dict(data['time'])

C:\ProgramData\Anaconda3\lib\site-packages\cartolafc\models.py in from_dict(cls, data, clubes, atleta_id, is_capitao) 60 atleta_id = atleta_id if atleta_id else data['atleta_id'] 61 pontos = data['pontos_num'] if 'pontos_num' in data else data['pontuacao'] ---> 62 clube = clubes[data['clube_id']] 63 return cls(atleta_id, data['apelido'], pontos, data['scout'], data['posicao_id'], clube, 64 data.get('status_id', None), is_capitao)

KeyError: 1

myoshiro avatar Oct 28 '20 03:10 myoshiro

Percebi o mesmo erro, tratei uma exception na models.py na linha clube = clubes[data['clube_id']] da class Atleta(BaseModel):. O motivo é esse mesmo, se o jogador/técnico escalado sair do clube o clube_id será nulo.

gumalobato avatar Nov 09 '20 05:11 gumalobato

A correção é essa mesmo @gumalobato, porém o ideal seria corrigir no código fonte, pois daí todos que instalarem a biblioteca já levam consigo a correção. Fiz a correção apenas na minha máquina também.

aebrag avatar Mar 01 '21 17:03 aebrag

A correção é essa mesmo @gumalobato, porém o ideal seria corrigir no código fonte, pois daí todos que instalarem a biblioteca já levam consigo a correção. Fiz a correção apenas na minha máquina também.

E qual seria a correção? Tentei aqui e nao to conseguindo.

diegobarpereira avatar Aug 07 '21 00:08 diegobarpereira

@diegobarpereira segue abaixo o print do código com a alteração efetuada, veja se ajuda. Repare que o arquivo é Models.py, a Classe a ser atualizada é a Atleta e a linha de código está salientada.

image

aebrag avatar Aug 07 '21 17:08 aebrag

@diegobarpereira segue abaixo o print do código com a alteração efetuada, veja se ajuda. Repare que o arquivo é Models.py, a Classe a ser atualizada é a Atleta e a linha de código está salientada.

image

Primeiramente obrigado pela resposta e pelo código. Mas vc já rodou isso num loop de atletas de um time tentando puxar um atleta.clube.nome ?

diegobarpereira avatar Aug 07 '21 18:08 diegobarpereira

Já sim e roda sem problema algum, abaixo trecho do código...

image

aebrag avatar Aug 07 '21 18:08 aebrag

Já sim e roda sem problema algum, abaixo trecho do código...

image

Valeu brother. Realmente faltava esse If que esqueci de implementar. Obrigado pela ajuda.

diegobarpereira avatar Aug 07 '21 18:08 diegobarpereira

Valeu, galera! Desculpa por deixar voces na mão. Estou atualizando a API para 2023 e adicionei essa correção na última versao em dev.

vicenteneto avatar Mar 20 '23 01:03 vicenteneto