Skip to content

feiticeiro-tec/CBF-Download

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CBF Download

Como usar o serviço de download de arquivos do CBF. o container não contem uma interface de usuario, para usar o serviço é necessario usar o rabbitmq para enviar uma mensagem para a fila cbf.download com os parametros serie, ano e partida.

Dockercompose

docker compose up

o serviço de download do arquivo vai esta disponivel da comunicação da tarefa cbf.download na porta 5672 passando os parametros serie, ano e partida apos isso sera retornado um dicionario contendo.

{
    "serie": "A",
    "ano": 2022,
    "partida": 1,
    "file": "gzip decode latin-1"
}

como obter o binario da file

data_response = task.result
file = data_response['file']
file_encode = file.encode('latin-1')
file_bytes = gzip.decompress(file_encode)
with open('file.pdf', 'wb') as f:
    f.write(file_bytes)

Dockerfile

docker pull feiticeirotec/cbf-download

docker run\
-e REDIS_HOST=redis\
-e REDIS_PORT=6379\
-e REDIS_PASSWORD=guest\
-e REDIS_DB=0\
feiticeirotec/cbf-download

Exemplo de uso

from celery import Celery
import gzip

BROKER = "pyamqp://guest:guest@localhost//"

app = Celery(broker=BROKER, backend="rpc://")


task = app.send_task(
    "cbf.download",
    kwargs={
        "serie": "A",
        "ano": 2019,
        "partida": 1,
    },
)

data_response = task.wait()
serie = data_response["serie"]
ano = data_response["ano"]
partida = data_response["partida"]
file = data_response["file"]
file_encode = file.encode("latin-1")
file_bytes = gzip.decompress(file_encode)
with open(f"{ano}-{serie}-{partida}.pdf", "wb") as f:
    f.write(file_bytes)

Parse

Como usar o serviço de parse de arquivos do CBF.

cbf.parse.v2 para usar a versĂŁo 2 do parse

task = app.send_task(
    "cbf.parse",
    kwargs={
        "file": file,
    },
)

data_response = task.wait()
print(data_response)

retorno do parse do pdf

{
    "Times": [["GrĂŞmio", "RS"],["Santos", "SP"]],
    "Jogaodres": {
        "GrĂŞmio": [
            {"Ordem": "T", "Posicao": "(g)", "Categoria": "P", "cbf": "175411"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "165322"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "554626"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "303436"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "166603"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "379065"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "180546"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "407776"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "422351"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "317751"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "292942"},
            {"Ordem": "R", "Posicao": "(g)", "Categoria": "P", "cbf": "169978"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "137644"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "298485"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "409960"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "150201"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "399284"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "183094"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "391953"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "646612"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "428672"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "402681"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "184307"}],
        "Santos": [
            {"Ordem": "T", "Posicao": "(g)", "Categoria": "P", "cbf": "177770"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "170272"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "186450"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "646668"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "334559"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "646663"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "295792"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "377476"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "318143"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "373768"},
            {"Ordem": "T", "Posicao": null, "Categoria": "P", "cbf": "331842"},
            {"Ordem": "R", "Posicao": "(g)", "Categoria": "P", "cbf": "188398"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "354299"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "320593"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "308980"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "633531"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "553524"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "441648"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "324513"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "633582"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "307979"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "362877"},
            {"Ordem": "R", "Posicao": null, "Categoria": "P", "cbf": "529172"}
        ]
    },
    "Localizacao": {
        "data": "28/04/2019",
        "hora": "11: 00",
        "estadio": "Arena do GrĂŞmio",
        "cidade": "Porto Alegre"
    },
    "Arbitros": {
        "Arbitro Principal": ["Bruno Arleu de Araujo",["AB", "RJ"]],
        "Arbitro Segundo": ["Rodrigo Figueiredo Henrique Correa",["FIFA", "RJ"]],
        "Arbitro Terceiro": ["Thiago Henrique Neto Correa Farinha",["AB", "RJ"]],
        "Arbitro Quarto": ["Alexandre Vargas Tavares de Jesus",["AB", "RJ"]]
    },
    "Delegado": "Marcos Roberto Caduri de Almeida",
    "Analista": "Jose Mocellin",
    "Mandante Entrada": [["10: 50",0],["12: 01",0]],
    "Visitante Entrada": [["10: 54",4],["12: 02",0]],
    "Tempo 1": [
        ["11: 02",2],
        ["11: 50",3]
    ],
    "Tempo 2": [
        ["12: 05",0],
        ["12: 54",4]
    ],
    "Placar": [
        [0,2],
        [1,2]
    ],
    "Cartoes Amarelos": [
        ["10: 00",2,5, "Alison Lopes Ferreira",["Santos", "SP"]],
        ["23: 00",2,21, "Diego Cristiano Evaristo",["Santos", "SP"]],
        ["39: 00",2,28, "Lucas Verissimo da Silva",["Santos", "SP"]],
        ["03: 00",2,17, "Derlis Alberto Gonzalez Galeano",["Santos", "SP"]],
        ["07: 00",2,14, "Matheus Henrique de Souza",["GrĂŞmio", "RS"]],
        ["33: 00",1,8, "Maicon Thiago Pereira de Souza",["GrĂŞmio", "RS"]],
        ["38: 00",1,4, "Walter Kannemann",["GrĂŞmio", "RS"]]
    ],
    "Cartoes Vemelhos": [],
    "Substituicoes": [
        ["06: 00",2,["GrĂŞmio", "RS"],9, "Diego Tardelli Martins 2",3, "Alisson Euler de Freitas Cas"],
        ["14: 00",2,["GrĂŞmio", "RS"],7, "Luan Guilherme de Jesus Vieira 2",1, "Jean Pyerre Casagrande Silve"],
        ["21: 00",2,["Santos", "SP"],17, "Derlis Alberto Gonzalez Gale",27, "Eduardo Colcenti Antunes"],
        ["28: 00",2,["GrĂŞmio", "RS"],10, "Felipe dos Reis Pereira Vize",12, "Bruno Cortes Barbosa"],
        ["36: 00",2,["Santos", "SP"],7, "Carlos Andres Sanchez Arcosa 3",0, "Jean Lucas de Souza Oliveira"]
    ],
    "Gols": [
        ["05: 00",1, "NR",27, "Eduardo Colcenti Antunes",["Santos", "SP"]],
        ["35: 00",1, "NR",36, "Felipe Jonatan Rocha Andrade",["Santos", "SP"]]
    ]
}

Extração da versão 2:

{
    "times": {
        "Gr\u00eamio": {
            "nome": "Gr\u00eamio",
            "sigla": "RS",
            "casa": true,
            "jogadores": [
                {
                    "tipo": "Titular",
                    "posicao": "Goleiro",
                    "categoria": "Profissional",
                    "cbf": "175411"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "165322"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "554626"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "303436"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "166603"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "379065"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "180546"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "407776"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "422351"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "317751"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "292942"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Goleiro",
                    "categoria": "Profissional",
                    "cbf": "169978"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "137644"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "298485"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "409960"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "150201"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "399284"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "183094"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "391953"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "646612"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "428672"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "402681"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "184307"
                }
            ]
        },
        "Santos": {
            "nome": "Santos",
            "sigla": "SP",
            "casa": false,
            "jogadores": [
                {
                    "tipo": "Titular",
                    "posicao": "Goleiro",
                    "categoria": "Profissional",
                    "cbf": "177770"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "170272"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "186450"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "646668"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "334559"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "646663"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "295792"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "377476"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "318143"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "373768"
                },
                {
                    "tipo": "Titular",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "331842"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Goleiro",
                    "categoria": "Profissional",
                    "cbf": "188398"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "354299"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "320593"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "308980"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "633531"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "553524"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "441648"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "324513"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "633582"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "307979"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "362877"
                },
                {
                    "tipo": "Reserva",
                    "posicao": "Jogador",
                    "categoria": "Profissional",
                    "cbf": "529172"
                }
            ]
        }
    },
    "localizacao": {
        "hora": "11:00",
        "data": "28/04/2019",
        "estadio": "Arena do Gr\u00eamio",
        "cidade": "Porto Alegre"
    },
    "arbitros": {
        "arbitro_principal": {
            "nome": "Bruno Arleu de Araujo",
            "categoria": "AB",
            "regiao": "RJ"
        },
        "arbitro_segundo": {
            "nome": "Rodrigo Figueiredo Henrique Correa",
            "categoria": "FIFA",
            "regiao": "RJ"
        },
        "arbitro_terceiro": {
            "nome": "Thiago Henrique Neto Correa Farinha",
            "categoria": "AB",
            "regiao": "RJ"
        },
        "arbitro_quarto": {
            "nome": "Alexandre Vargas Tavares de Jesus",
            "categoria": "AB",
            "regiao": "RJ"
        }
    },
    "delegado": "Marcos Roberto Caduri de Almeida",
    "analista": "Jose Mocellin",
    "mandante_entrada": [
        {
            "hora": "10:50",
            "atraso": 0
        },
        {
            "hora": "12:01",
            "atraso": 0
        }
    ],
    "visitante_entrada": [
        {
            "hora": "10:54",
            "atraso": 4
        },
        {
            "hora": "12:02",
            "atraso": 0
        }
    ],
    "tempo_1": [
        {
            "hora": "11:02",
            "atraso": 2
        },
        {
            "hora": "11:50",
            "acrecimo": 3
        }
    ],
    "tempo_2": [
        {
            "hora": "12:05",
            "atraso": 0
        },
        {
            "hora": "12:54",
            "acrecimo": 4
        }
    ],
    "placar": [
        {
            "Gr\u00eamio": 0,
            "Santos": 2
        },
        {
            "Gr\u00eamio": 1,
            "Santos": 2
        }
    ],
    "cartoes_amarelos": [
        {
            "hora": "10:00",
            "tempo": 2,
            "num": 5,
            "nome": "Alison Lopes Ferreira",
            "time": "Santos"
        },
        {
            "hora": "23:00",
            "tempo": 2,
            "num": 21,
            "nome": "Diego Cristiano Evaristo",
            "time": "Santos"
        },
        {
            "hora": "39:00",
            "tempo": 2,
            "num": 28,
            "nome": "Lucas Verissimo da Silva",
            "time": "Santos"
        },
        {
            "hora": "03:00",
            "tempo": 2,
            "num": 17,
            "nome": "Derlis Alberto Gonzalez Galeano",
            "time": "Santos"
        },
        {
            "hora": "07:00",
            "tempo": 2,
            "num": 14,
            "nome": "Matheus Henrique de Souza",
            "time": "Gr\u00eamio"
        },
        {
            "hora": "33:00",
            "tempo": 1,
            "num": 8,
            "nome": "Maicon Thiago Pereira de Souza",
            "time": "Gr\u00eamio"
        },
        {
            "hora": "38:00",
            "tempo": 1,
            "num": 4,
            "nome": "Walter Kannemann",
            "time": "Gr\u00eamio"
        }
    ],
    "cartoes_vemelhos": [],
    "substituicoes": [
        {
            "hora": "45:00",
            "tempo": "INT",
            "time": "Santos",
            "entrada_numero": 5,
            "entrada_nome": "Alison Lopes Ferreira 4",
            "saida_numero": 1,
            "saida_nome": "Jean Mota Oliveira de Sousa"
        },
        {
            "hora": "06:00",
            "tempo": 2,
            "time": "Gr\u00eamio",
            "entrada_numero": 9,
            "entrada_nome": "Diego Tardelli Martins 2",
            "saida_numero": 3,
            "saida_nome": "Alisson Euler de Freitas Cas"
        },
        {
            "hora": "14:00",
            "tempo": 2,
            "time": "Gr\u00eamio",
            "entrada_numero": 7,
            "entrada_nome": "Luan Guilherme de Jesus Vieira 2",
            "saida_numero": 1,
            "saida_nome": "Jean Pyerre Casagrande Silve"
        },
        {
            "hora": "21:00",
            "tempo": 2,
            "time": "Santos",
            "entrada_numero": 17,
            "entrada_nome": "Derlis Alberto Gonzalez Gale",
            "saida_numero": 27,
            "saida_nome": "Eduardo Colcenti Antunes"
        },
        {
            "hora": "28:00",
            "tempo": 2,
            "time": "Gr\u00eamio",
            "entrada_numero": 10,
            "entrada_nome": "Felipe dos Reis Pereira Vize",
            "saida_numero": 12,
            "saida_nome": "Bruno Cortes Barbosa"
        },
        {
            "hora": "36:00",
            "tempo": 2,
            "time": "Santos",
            "entrada_numero": 7,
            "entrada_nome": "Carlos Andres Sanchez Arcosa 3",
            "saida_numero": 0,
            "saida_nome": "Jean Lucas de Souza Oliveira"
        }
    ],
    "gols": [
        {
            "hora": "05:00",
            "tempo": 1,
            "tipo": "NR",
            "numero": 27,
            "nome": "Eduardo Colcenti Antunes",
            "time": "Santos"
        },
        {
            "hora": "35:00",
            "tempo": 1,
            "tipo": "NR",
            "numero": 36,
            "nome": "Felipe Jonatan Rocha Andrade",
            "time": "Santos"
        }
    ]
}