vicenteneto / python-cartolafc

Uma interface em Python para a API Rest do Cartola FC
MIT License
67 stars 25 forks source link

Erro ao buscar dados de Mercado() #72

Closed gumalobato closed 1 year ago

gumalobato commented 3 years ago

Recentemente começou a dar erro ao buscar dados do Mercado() como status e rodada_atual por exemplo: rodada_atual = api.mercado().rodada_atual status_mercado = api.mercado().status.nome

Sugestão remover o parâmetro "aviso" no construtor e no retorno

class Mercado(BaseModel): """ Mercado """

#def __init__(self, rodada_atual: int, status_mercado: int, times_escalados: int, aviso: str, fechamento: datetime) -> None:
def __init__(self, rodada_atual: int, status_mercado: int, times_escalados: int, fechamento: datetime) -> None:
    self.rodada_atual = rodada_atual
    self.status = _mercado_status[status_mercado]
    self.times_escalados = times_escalados
    #self.aviso = aviso
    self.fechamento = fechamento

@classmethod
def from_dict(cls, data: dict) -> 'Mercado':
    fechamento = datetime(
        data['fechamento']['ano'],
        data['fechamento']['mes'],
        data['fechamento']['dia'],
        data['fechamento']['hora'],
        data['fechamento']['minuto'],
    )
    #return cls(data['rodada_atual'], data['status_mercado'], data['times_escalados'], data['aviso'], fechamento)
    return cls(data['rodada_atual'], data['status_mercado'], data['times_escalados'], fechamento)
henrique1996n1 commented 3 years ago

Tambem tive o mesmo problema que você. Por um acaso você conseguiu chegar em alguma solução?

gumalobato commented 3 years ago

Tambem tive o mesmo problema que você. Por um acaso você conseguiu chegar em alguma solução?

Removi a chamada ao "aviso" como coloquei acima. Comentei as linhas:

self.aviso = aviso

return cls(data['rodada_atual'], data['status_mercado'], data['times_escalados'], data['aviso'], fechamento)

e inseri:

return cls(data['rodada_atual'], data['status_mercado'], data['times_escalados'], fechamento)

Como somente queria buscar o status do mercado, não fez diferença para meu uso.

henrique1996n1 commented 3 years ago

Entendi. Consegui resolver o problema graças a esse seu post. Obrigado.

henrique1996n1 commented 3 years ago

E aproveitando, por um acaso você tem conhecimento se tem como pegar o preço e status dos jogadores na rodada atual?

gumalobato commented 3 years ago

Podes aproveitar o método: api.mercado_atletas()

se der um print nesse método tens todas as informações do mercado de atletas (quando o mercado tá aberto). Se trabalhares nessa lista podes filtrar somente por status, nome, clube etc. Dar um exemplo:

print(api.mercado_atletas()) -> printa todos os atletas com todas as informações (nome, apelido, scouts, status etc)

Podes igualmente buscar uma informação específica, um exemplo bem simples:

mercado = api.mercado_atletas()
cont = 0
for atletas in mercado:
    if(mercado[cont].status.nome == 'Provável'):
        print(f'Atleta: ', mercado[cont].posicao.abreviacao, ' - ', mercado[cont].apelido)
    cont+=1

vais ter algo como:

Atleta:  gol  -  Santos
Atleta:  mei  -  Marlon Freitas
Atleta:  mei  -  Léo Cittadini
(...)
vicenteneto commented 1 year ago

Valeu galera, aviso foi removido da API.