Skip to content
This repository has been archived by the owner on Sep 11, 2020. It is now read-only.

Tem como buscar as parciais de todos os times de uma determinada liga durante a rodada? #3

Closed
caioschiavo opened this issue May 17, 2016 · 36 comments

Comments

@caioschiavo
Copy link

Através do seu código e algumas modificações eu até consegui, mas buscando time por time, individualmente e depois organizando filtrando pelo valor da parcial, porem, lento demais, ja que busca 32 times pelo api.cartolafc.globo.com/times?q=

veja

http://caioschiavo.com/quinta

`$url = "https://api.cartolafc.globo.com/time/{slug}";
$response = (file_get_contents($url));
$teste = (json_decode($response,true));

$times[1]['nome'] = $teste['time']['nome'];
$times[1]['pontos'] = $teste['pontos'];
$times[1]['cartola'] = $teste['time']['nome_cartola'];
$times[1]['escudo'] = $teste['time']['url_escudo_svg'];`

fiz de ontem pra hoje na correria, só para quebrar um ganho

mas será que tem alguma maneira mais facil?

@roomoraaes
Copy link

Também tenho essa dúvida. Quero implementar as parciais no site da minha liga particular (http://www.variosgoles.com.br), mas nesse modelo acaba ficando muito lento, pois minha liga conta com 50 times. Alguém tem alguma sugestão?

@caioschiavo
Copy link
Author

@roomoraaes O seu está bem legal e aparentemente mas rápido do que o meu
tem como vc disponibilizar ai pra eu dar uma olhada?

@giovanigenerali
Copy link
Owner

@caioschiavo está um pouco lento o http://caioschiavo.com/quinta/
Se puder coloca em algum repositório para podermos dar uma olhada. vlw

@caioschiavo
Copy link
Author

@giovanigenerali sim, bem lento, pq faço 32 requisições, uma para cada time.

@roomoraaes
Copy link

@caioschiavo Não é necessário fazer 32 requisições para cada time. Apenas uma requisição. Quando voce manda um request para a url:
https://api.cartolafc.globo.com/time/nome-time, ela retornará o todos os atletas escalados no time. Some a pontuação de cada um e terá a parcial do time.
Ou seja, é necessário apenas uma requisição externa para cada time.

@caioschiavo
Copy link
Author

@roomoraaes então, mas é isso mesmo o que eu faço, 1 requisição para cada time, mas são 32 times, portanto 32 requisições no total.
@roomoraaes aproveitando, vc sabe como consultar se um usuário está logado? senão nas apis fechadas tem que ficar autenticando a cada refresh?

@roomoraaes
Copy link

@caioschiavo Estranho.... Estou utilizando essa lógica e meu retorno esta bem rápido. Média de 1.20 segundos. Em relação a consulta de autenticação, eu não sei lhe dizer. Não estou usando autenticação no meu projeto, as APIs públicas já estão sendo suficientes para mim.

@caioschiavo
Copy link
Author

@roomoraaes fez em php? Porque vc soma as parciais dos atletas, se no JSON ja vem a parcial do time?

@roomoraaes
Copy link

@caioschiavo Não, a pontuação vem separada com atleta. A pontuação que você está dizendo só é atualizada quando o mercado é aberto, não é parcial.

@giovanigenerali
Copy link
Owner

giovanigenerali commented May 18, 2016

@caioschiavo consegui fazer uma chamada direta na API para autenticar e em seguida fazer as chamadas que requerem token.

Autenticação para obter o token

Tem que fazer um post via json nessa url:

https://login.globo.com/api/authentication

O conteúdo do json quem que seguir esse padrão:

{"payload":{"email":"[EMAIL]","password":"[SENHA]","serviceId": 438}}

O retorno do post vai trazer esse json:

{"id":"Authenticated","userMessage":"Usuário autenticado com sucesso","glbId":"[TOKEN]"}

Get nas urls que necessitam de token

Após isso faça uma chamada get nas urls que precisam de autenticação passando no header a chave 'X-GLB-Token' com o valor do token que foi retornado na chamada de autenticação, exemplo:

Informações completa do time

https://api.cartolafc.globo.com/auth/time/info

X-GLB-Token: [TOKEN]

{
  "time": {
    "time_id": 834723,
    "clube_id": 264,
    "esquema_id": 3,
    "cadun_id": 40424774,
    "facebook_id": null,
    "foto_perfil": "https://cartolafc.globo.com/static/img/placeholder_perfil.png",
    "nome": "SLB Encarnados",
    "nome_cartola": "Giovani Generali",
    "slug": "slb-encarnados",
    "tipo_escudo": 1,
    "cor_fundo_escudo": "ffffff",
    "cor_borda_escudo": "000000",
    "cor_primaria_estampa_escudo": "ff241d",
    "cor_secundaria_estampa_escudo": "997a00",
    "url_escudo_svg": "https://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/svg/escudo/004042477420160503190708",
    "url_escudo_png": "https://s2.glbimg.com/aSc31ZW1PVPPvUKruorX7jnYbNY=/https://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/svg/escudo/004042477420160503190708",
    "url_camisa_svg": "https://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/svg/camisa/004042477420160503190708",
    "url_camisa_png": "https://s2.glbimg.com/0S5uu5oYl2vJvzeEOWsF7scP1Zk=/https://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/svg/camisa/004042477420160503190708",
    "url_escudo_placeholder_png": "http://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/placeholder/escudo.png",
    "url_camisa_placeholder_png": "http://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/placeholder/camisa.png",
    "tipo_estampa_escudo": 4,
    "tipo_adorno": 1,
    "tipo_camisa": 1,
    "tipo_estampa_camisa": 5,
    "cor_camisa": "ffffff",
    "cor_primaria_estampa_camisa": "ff241d",
    "cor_secundaria_estampa_camisa": "997a00",
    "assinante": false,
    "cadastro_completo": true,
    "patrocinador1_id": 62,
    "patrocinador2_id": 63
  }
}

Informações do time completa

https://api.cartolafc.globo.com/auth/time

X-GLB-Token: [TOKEN]

Feito isso, pronto está ai o json com todo o seu time:

{
  "atletas": [
    {
      "nome": "Rodrigo Eduardo Costa Marinho",
      "apelido": "Rodriguinho",
      "foto": "https://s.glbimg.com/es/sde/f/2016/04/28/8d01a11770a124d6d1f9432e0d2cc9eb_FORMATO.png",
      "atleta_id": 61033,
      "rodada_id": 1,
      "clube_id": 264,
      "posicao_id": 4,
      "status_id": 6,
      "pontos_num": 3.1,
      "preco_num": 7.43,
      "variacao_num": 0.43,
      "media_num": 3.1,
      "jogos_num": 1,
      "partida": {
        "clube_casa_id": 287,
        "clube_casa_posicao": 19,
        "clube_visitante_id": 264,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 8,
        "partida_data": "2016-05-22 16:00:00",
        "local": "Barradão",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {
        "FC": 1,
        "FF": 3,
        "FS": 2,
        "PE": 4,
        "RB": 1
      }
    },
    {
      "nome": "Gustavo Ermel",
      "apelido": "Ermel",
      "foto": "https://s.glbimg.com/es/sde/f/2016/04/29/9fbbc2a0195e2d3a7da201dfe77f031e_FORMATO.jpeg",
      "atleta_id": 82952,
      "rodada_id": 1,
      "clube_id": 316,
      "posicao_id": 5,
      "status_id": 7,
      "pontos_num": 2.4,
      "preco_num": 6.91,
      "variacao_num": -0.09,
      "media_num": 2.4,
      "jogos_num": 1,
      "partida": {
        "clube_casa_id": 283,
        "clube_casa_posicao": 18,
        "clube_visitante_id": 316,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 9,
        "partida_data": "2016-05-21 21:00:00",
        "local": "Mineirão",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {
        "FC": 1,
        "FD": 1,
        "FS": 5,
        "PE": 2
      }
    },
    {
      "nome": "Giovanni Augusto Oliveira Cardoso",
      "apelido": "Giovanni Augusto",
      "foto": "https://s.glbimg.com/es/sde/f/2016/04/28/9930f715c0d34977f60c416dc3311aca_FORMATO.png",
      "atleta_id": 68938,
      "rodada_id": 1,
      "clube_id": 264,
      "posicao_id": 4,
      "status_id": 7,
      "pontos_num": -0.5,
      "preco_num": 3.31,
      "variacao_num": -1.69,
      "media_num": -0.5,
      "jogos_num": 1,
      "partida": {
        "clube_casa_id": 287,
        "clube_casa_posicao": 19,
        "clube_visitante_id": 264,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 8,
        "partida_data": "2016-05-22 16:00:00",
        "local": "Barradão",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {
        "I": 1
      }
    },
    {
      "nome": "Adenor Leonardo Bachi",
      "apelido": "Tite",
      "foto": "https://s.glbimg.com/es/sde/f/2016/04/07/cac34fc5a42fd086e55620d546c496a1_FORMATO.png",
      "atleta_id": 45125,
      "rodada_id": 1,
      "clube_id": 264,
      "posicao_id": 6,
      "status_id": 7,
      "pontos_num": 4.66,
      "preco_num": 14.46,
      "variacao_num": -0.54,
      "media_num": 4.66,
      "jogos_num": 1,
      "partida": {
        "clube_casa_id": 287,
        "clube_casa_posicao": 19,
        "clube_visitante_id": 264,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 8,
        "partida_data": "2016-05-22 16:00:00",
        "local": "Barradão",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {}
    },
    {
      "nome": "Bruno Viana Willemen da Silva",
      "apelido": "Bruno Viana",
      "foto": "https://s.glbimg.com/es/sde/f/2016/04/28/5e8c21e4fe26c6bb8c148b2ae722699d_FORMATO.png",
      "atleta_id": 92291,
      "rodada_id": 1,
      "clube_id": 283,
      "posicao_id": 3,
      "status_id": 2,
      "pontos_num": 0,
      "preco_num": 3,
      "variacao_num": 0,
      "media_num": 0,
      "jogos_num": 0,
      "partida": {
        "clube_casa_id": 283,
        "clube_casa_posicao": 18,
        "clube_visitante_id": 316,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 9,
        "partida_data": "2016-05-21 21:00:00",
        "local": "Mineirão",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {}
    },
    {
      "nome": "Cássio Ramos",
      "apelido": "Cássio",
      "foto": "https://s.glbimg.com/es/sde/f/2016/04/28/8d0f1d77fad8f00513e096df10da46e2_FORMATO.png",
      "atleta_id": 42234,
      "rodada_id": 1,
      "clube_id": 264,
      "posicao_id": 1,
      "status_id": 7,
      "pontos_num": 0,
      "preco_num": 25,
      "variacao_num": 0,
      "media_num": 0,
      "jogos_num": 0,
      "partida": {
        "clube_casa_id": 287,
        "clube_casa_posicao": 19,
        "clube_visitante_id": 264,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 8,
        "partida_data": "2016-05-22 16:00:00",
        "local": "Barradão",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {}
    },
    {
      "nome": "Alison Wágner Lira Ferreira",
      "apelido": "Alison",
      "foto": "https://s.glbimg.com/es/sde/f/2016/05/09/d7263e570ed2a87bc24ead8f629b3d34_FORMATO.png",
      "atleta_id": 51702,
      "rodada_id": 1,
      "clube_id": 327,
      "posicao_id": 3,
      "status_id": 7,
      "pontos_num": 2.1,
      "preco_num": 3.75,
      "variacao_num": 0.75,
      "media_num": 2.1,
      "jogos_num": 1,
      "partida": {
        "clube_casa_id": 315,
        "clube_casa_posicao": 13,
        "clube_visitante_id": 327,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 14,
        "partida_data": "2016-05-22 16:00:00",
        "local": "Arena Condá",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {
        "FF": 2,
        "FS": 1,
        "PE": 5,
        "RB": 1
      }
    },
    {
      "nome": "Diogo Barbosa Mendanha",
      "apelido": "Diogo Barbosa",
      "foto": "https://s.glbimg.com/es/sde/f/2016/04/27/97ce1981f4c518e025727a48e20f5476_FORMATO.png",
      "atleta_id": 70916,
      "rodada_id": 1,
      "clube_id": 263,
      "posicao_id": 2,
      "status_id": 5,
      "pontos_num": 0,
      "preco_num": 4,
      "variacao_num": 0,
      "media_num": 0,
      "jogos_num": 0,
      "partida": {
        "clube_casa_id": 292,
        "clube_casa_posicao": 17,
        "clube_visitante_id": 263,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 15,
        "partida_data": "2016-05-22 18:30:00",
        "local": "Ilha do Retiro",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {}
    },
    {
      "nome": "Ewandro Felipe de Lima Costa",
      "apelido": "Ewandro",
      "foto": "https://s.glbimg.com/es/sde/f/2016/04/26/56ad0ab89503a3a67b55fbb9699091ea_FORMATO.png",
      "atleta_id": 86842,
      "rodada_id": 1,
      "clube_id": 293,
      "posicao_id": 5,
      "status_id": 7,
      "pontos_num": -0.8,
      "preco_num": 5.29,
      "variacao_num": -2.71,
      "media_num": -0.8,
      "jogos_num": 1,
      "partida": {
        "clube_casa_id": 293,
        "clube_casa_posicao": 20,
        "clube_visitante_id": 282,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 5,
        "partida_data": "2016-05-22 11:00:00",
        "local": "Arena da Baixada",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {
        "FC": 1,
        "PE": 1
      }
    },
    {
      "nome": "Leonardo Moreira Morais",
      "apelido": "Léo",
      "foto": "https://s.glbimg.com/es/sde/f/2016/05/13/eac8265d35cda412d31cdfb857c0d6a8_FORMATO.png",
      "atleta_id": 69177,
      "rodada_id": 1,
      "clube_id": 293,
      "posicao_id": 2,
      "status_id": 3,
      "pontos_num": -5.8,
      "preco_num": 0.74,
      "variacao_num": -2.26,
      "media_num": -5.8,
      "jogos_num": 1,
      "partida": {
        "clube_casa_id": 293,
        "clube_casa_posicao": 20,
        "clube_visitante_id": 282,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 5,
        "partida_data": "2016-05-22 11:00:00",
        "local": "Arena da Baixada",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {
        "CV": 1,
        "FC": 3,
        "FS": 2,
        "PE": 1
      }
    },
    {
      "nome": "Henrique Pacheco de Lima",
      "apelido": "Henrique",
      "foto": "https://s.glbimg.com/es/sde/f/2016/04/29/3ee91a269e77c0defb08f1fee38c0aff_FORMATO.png",
      "atleta_id": 37694,
      "rodada_id": 1,
      "clube_id": 283,
      "posicao_id": 4,
      "status_id": 7,
      "pontos_num": 5.1,
      "preco_num": 6.69,
      "variacao_num": 2.69,
      "media_num": 5.1,
      "jogos_num": 1,
      "partida": {
        "clube_casa_id": 283,
        "clube_casa_posicao": 18,
        "clube_visitante_id": 316,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 9,
        "partida_data": "2016-05-21 21:00:00",
        "local": "Mineirão",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {
        "CA": 1,
        "FC": 1,
        "FS": 4,
        "PE": 4,
        "RB": 4
      }
    },
    {
      "nome": "Gabriel Barbosa Almeida",
      "apelido": "Gabriel",
      "foto": "https://s.glbimg.com/es/sde/f/2016/05/01/1483ff1b3cb82fa23bc8625656564b18_FORMATO.png",
      "atleta_id": 83257,
      "rodada_id": 1,
      "clube_id": 277,
      "posicao_id": 5,
      "status_id": 7,
      "pontos_num": -0.8,
      "preco_num": 11.18,
      "variacao_num": -4.82,
      "media_num": -0.8,
      "jogos_num": 1,
      "partida": {
        "clube_casa_id": 277,
        "clube_casa_posicao": 16,
        "clube_visitante_id": 294,
        "aproveitamento_mandante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "aproveitamento_visitante": [
          "",
          "",
          "",
          "",
          ""
        ],
        "clube_visitante_posicao": 4,
        "partida_data": "2016-05-22 11:00:00",
        "local": "Vila Belmiro",
        "valida": true,
        "placar_oficial_mandante": null,
        "placar_oficial_visitante": null,
        "url_confronto": "",
        "url_transmissao": ""
      },
      "scout": {
        "FC": 2,
        "FF": 2,
        "FS": 3,
        "I": 3,
        "PE": 4
      }
    }
  ],
  "clubes": {
    "262": {
      "id": 262,
      "nome": "Flamengo",
      "abreviacao": "FLA",
      "posicao": 5,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/flamengo_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/flamengo_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/flamengo_30x30.png"
      }
    },
    "263": {
      "id": 263,
      "nome": "Botafogo",
      "abreviacao": "BOT",
      "posicao": 15,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/botafogo_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/botafogo_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/botafogo_30x30.png"
      }
    },
    "264": {
      "id": 264,
      "nome": "Corinthians",
      "abreviacao": "COR",
      "posicao": 8,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/corinthians_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/corinthians_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/corinthians_30x30.png"
      }
    },
    "266": {
      "id": 266,
      "nome": "Fluminense",
      "abreviacao": "FLU",
      "posicao": 3,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2015/07/21/fluminense_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2015/07/21/fluminense_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2015/07/21/Fluminense-escudo.png"
      }
    },
    "275": {
      "id": 275,
      "nome": "Palmeiras",
      "abreviacao": "PAL",
      "posicao": 1,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/palmeiras_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/palmeiras_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/palmeiras_30x30.png"
      }
    },
    "276": {
      "id": 276,
      "nome": "São Paulo",
      "abreviacao": "SAO",
      "posicao": 7,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/sao_paulo_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/sao_paulo_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/sao_paulo_30x30.png"
      }
    },
    "277": {
      "id": 277,
      "nome": "Santos",
      "abreviacao": "SAN",
      "posicao": 16,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/santos_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/santos_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/santos_30x30.png"
      }
    },
    "282": {
      "id": 282,
      "nome": "Atlético-MG",
      "abreviacao": "ATL",
      "posicao": 5,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/atletico_mg_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/atletico_mg_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/atletico_mg_30x30.png"
      }
    },
    "283": {
      "id": 283,
      "nome": "Cruzeiro",
      "abreviacao": "CRU",
      "posicao": 18,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2015/04/29/cruzeiro_65.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2015/04/29/cruzeiro_45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2015/04/29/cruzeiro_30.png"
      }
    },
    "284": {
      "id": 284,
      "nome": "Grêmio",
      "abreviacao": "GRE",
      "posicao": 11,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/gremio_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/gremio_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/gremio_30x30.png"
      }
    },
    "285": {
      "id": 285,
      "nome": "Internacional",
      "abreviacao": "INT",
      "posicao": 10,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2016/05/03/inter65.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2016/05/03/inter45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2016/05/03/inter30.png"
      }
    },
    "287": {
      "id": 287,
      "nome": "Vitória",
      "abreviacao": "VIT",
      "posicao": 19,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/vitoria_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/vitoria_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/vitoria_30x30.png"
      }
    },
    "292": {
      "id": 292,
      "nome": "Sport",
      "abreviacao": "SPO",
      "posicao": 17,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2015/07/21/sport65.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2015/07/21/sport45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2015/07/21/sport30.png"
      }
    },
    "293": {
      "id": 293,
      "nome": "Atlético-PR",
      "abreviacao": "ATL",
      "posicao": 20,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2015/06/24/atletico-pr_2015_65.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2015/06/24/atletico-pr_2015_45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2015/06/24/atletico-pr_2015_30.png"
      }
    },
    "294": {
      "id": 294,
      "nome": "Coritiba",
      "abreviacao": "COR",
      "posicao": 4,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/coritiba_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/coritiba_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/coritiba_30x30.png"
      }
    },
    "303": {
      "id": 303,
      "nome": "Ponte Preta",
      "abreviacao": "PON",
      "posicao": 12,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/ponte_preta_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/ponte_preta_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/ponte_preta_30x30.png"
      }
    },
    "315": {
      "id": 315,
      "nome": "Chapecoense",
      "abreviacao": "CHA",
      "posicao": 13,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2015/08/03/Escudo-Chape-165.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2015/08/03/Escudo-Chape-145.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2015/08/03/Escudo-Chape-130.png"
      }
    },
    "316": {
      "id": 316,
      "nome": "Figueirense",
      "abreviacao": "FIG",
      "posicao": 9,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/figueirense_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/figueirense_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/figueirense_30x30.png"
      }
    },
    "327": {
      "id": 327,
      "nome": "América-MG",
      "abreviacao": "AME",
      "posicao": 14,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/equipes/2014/04/14/america_mg_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/america_mg_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/equipes/2013/12/16/america_mg_30x30.png"
      }
    },
    "344": {
      "id": 344,
      "nome": "Santa Cruz",
      "abreviacao": "STC",
      "posicao": 2,
      "escudos": {
        "60x60": "https://s.glbimg.com/es/sde/f/organizacoes/2014/04/14/santa_cruz_60x60.png",
        "45x45": "https://s.glbimg.com/es/sde/f/organizacoes/2014/04/14/santa_cruz_45x45.png",
        "30x30": "https://s.glbimg.com/es/sde/f/organizacoes/2014/04/14/santa_cruz_30x30.png"
      }
    }
  },
  "posicoes": {
    "1": {
      "id": 1,
      "nome": "Goleiro",
      "abreviacao": "gol"
    },
    "2": {
      "id": 2,
      "nome": "Lateral",
      "abreviacao": "lat"
    },
    "3": {
      "id": 3,
      "nome": "Zagueiro",
      "abreviacao": "zag"
    },
    "4": {
      "id": 4,
      "nome": "Meia",
      "abreviacao": "mei"
    },
    "5": {
      "id": 5,
      "nome": "Atacante",
      "abreviacao": "ata"
    },
    "6": {
      "id": 6,
      "nome": "Técnico",
      "abreviacao": "tec"
    }
  },
  "status": {
    "2": {
      "id": 2,
      "nome": "Dúvida"
    },
    "3": {
      "id": 3,
      "nome": "Suspenso"
    },
    "5": {
      "id": 5,
      "nome": "Contundido"
    },
    "6": {
      "id": 6,
      "nome": "Nulo"
    },
    "7": {
      "id": 7,
      "nome": "Provável"
    }
  },
  "time": {
    "time_id": 834723,
    "clube_id": 264,
    "esquema_id": 3,
    "cadun_id": 40424774,
    "facebook_id": null,
    "foto_perfil": "https://cartolafc.globo.com/static/img/placeholder_perfil.png",
    "nome": "SLB Encarnados",
    "nome_cartola": "Giovani Generali",
    "slug": "slb-encarnados",
    "tipo_escudo": 1,
    "cor_fundo_escudo": "ffffff",
    "cor_borda_escudo": "000000",
    "cor_primaria_estampa_escudo": "ff241d",
    "cor_secundaria_estampa_escudo": "997a00",
    "url_escudo_svg": "https://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/svg/escudo/004042477420160503190708",
    "url_escudo_png": "https://s2.glbimg.com/aSc31ZW1PVPPvUKruorX7jnYbNY=/https://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/svg/escudo/004042477420160503190708",
    "url_camisa_svg": "https://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/svg/camisa/004042477420160503190708",
    "url_camisa_png": "https://s2.glbimg.com/0S5uu5oYl2vJvzeEOWsF7scP1Zk=/https://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/svg/camisa/004042477420160503190708",
    "url_escudo_placeholder_png": "http://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/placeholder/escudo.png",
    "url_camisa_placeholder_png": "http://s3.glbimg.com/v1/AUTH_58d78b787ec34892b5aaa0c7a146155f/placeholder/camisa.png",
    "tipo_estampa_escudo": 4,
    "tipo_adorno": 1,
    "tipo_camisa": 1,
    "tipo_estampa_camisa": 5,
    "cor_camisa": "ffffff",
    "cor_primaria_estampa_camisa": "ff241d",
    "cor_secundaria_estampa_camisa": "997a00",
    "assinante": false,
    "cadastro_completo": true,
    "patrocinador1_id": 62,
    "patrocinador2_id": 63
  },
  "patrimonio": 91.76,
  "variacao_patrimonio": null,
  "esquema_id": 3,
  "pontos": 9.460000038146973,
  "variacao_pontos": null,
  "valor_time": 91.76,
  "servicos": [
    {
      "servicoId": 3004,
      "status": "HABILITADO"
    },
    {
      "servicoId": 5391,
      "status": "HABILITADO"
    },
    {
      "servicoId": 6490,
      "status": "HABILITADO"
    },
    {
      "servicoId": 438,
      "status": "HABILITADO"
    }
  ],
  "total_ligas": 0,
  "total_ligas_matamata": 0
}

Obs.: Para testar essas chamadas eu recomendo usar o https://www.getpostman.com/.

@caioschiavo
Copy link
Author

@roomoraaes valeu, acertei a pontuação aqui

@giovanigenerali então, isso eu consegui também. Minha duvida seria o seguinte, a cada refresh ele vai autenticar e pegar o token, correto? tem como verificar se ja está autenticado antes de fazer a requisição em https://login.globo.com/api/authentication??

@giovanigenerali
Copy link
Owner

giovanigenerali commented May 18, 2016

@caioschiavo tem uma url que dá para ficar verificando se o usuário está autenticado:

http://cocoon.globo.com/?callback=userAuth

Retorna esse json:

{
  "hasProEmail": false,
  "isMale": true,
  "name": "[nome do usuario]",
  "facebookId": null,
  "photo": null,
  "hasFreeEmail": false,
  "lastServices": [
    {
      "url": "http://globoesporte.globo.com/cartola-fc",
      "logo": "https://s.glbimg.com/pc/cw/servico/imagens/400-499/438/icone.png",
      "name": "Cartola FC"
    }
  ],
  "email": null,
  "isSubscriber": false,
  "hasFacebook": false
}

Para fazer logout, envia um get nessa url:

https://login.globo.com/logout

Consulte novamente a url de validação, veja que não existe mais o usuário autenticado.

http://cocoon.globo.com/?callback=userAuth

Retorno:

{
  "error": "Cookie missing"
}

Eu não sei se essa é a melhor forma de fazer essa verificação mas pelo que teste isso até que funciona.

Também não sei quanto tempo expira esse token, eu testei aqui e parece que se mantém por um bom tempo. Dependendo da sua necessidade, acho válido essa verificação antes de chamar essas urls que precisam de token.

Depois avisa se resolveu, blz.

@giovanigenerali
Copy link
Owner

@caioschiavo achei uma outra url para validação, segue o mesmo esquema da que postei acima. No callback você pode passar qualquer função.

http://cocoon.globo.com/user/logged?callback=userAuth

Retorno:

userAuth(
{
 status: "authorized",
 code: "codigo",
 name: "nome-usuario",
 gender: "sexo",
 address: {
 city: "cidade",
 state: "estado"
},
dateOfBirth: "data-nascimento",
token: "[TOKEN]",
provider: "cadun",
id: idi-cadun
}
)

Após o logout:

http://cocoon.globo.com/user/logged?callback=userAuth

Retorno:

userAuth(
{
 status: "unauthorized",
 token: "r_0Xgq_z_APIW66-kWEfkI3PjwL3k6con5zQQyt3Ay0=",
 code: "...50_G6TPxtuslPNUcDugtMPVkg59Cbqge7XsC2cLnA5o=",
 id: "12295485759280461717",
 provider: "anonymous"
}
)

@WMarlon
Copy link

WMarlon commented May 18, 2016

Boa Noite, estou acompanhando e desenvolvendo algo também... porém fiquei com uma dúvida...
E quando mudarem o nome do time? Ano passado tinha api com cadun ou id... não lembro bem... esse ano só pelo nome por eqto... ??
Obs.:Nem todos estão cadastrados na liga que administro (sem o PRO são só duas ligas).
Guardo o id na primeira consulta... mas e depois?

abraços...

@caioschiavo
Copy link
Author

@giovanigenerali é isso ai mesmo, obrigado

@giovanigenerali
Copy link
Owner

@WMarlon eu acho que na nova API só via slug do time mesmo, cadun e id era usado na API antiga. Talvez nesse seu caso você tenha que fazer uma nova consulta para verificar se o time mudou de nome pois o slug também vai mudar.

@giovanigenerali
Copy link
Owner

@caioschiavo troca o serviceId para 438 no json de autenticação.
Já atualizei meu comentário acima.

@spydoug
Copy link

spydoug commented May 24, 2016

Fala @giovanigenerali blz?

como resolver esse problema

XMLHttpRequest cannot load https://login.globo.com/api/authentication. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

a requisição não sendo feita da url deles.

Usei assim

$( document ).ready(function() {
$.ajax({
type: "POST",
contentType: "application/json",
url: "https://login.globo.com/api/authentication",
dataType: "json",
data: JSON.stringify({"email":"yyyy","password":"xxxx","serviceId": 438}),
success: function (msg) {
console.log(msg);
},
error: function (msg) {
console.log(msg);
alert(msg.statusText);
}
});

});

@giovanigenerali
Copy link
Owner

@spydoug veja o formato do json de envio para autenticação nesse arquivo aqui https://github.com/wgenial/cartrolandofc/blob/master/auth.php

@rafa-trr
Copy link

Fala galera.. to querendo usar essa API do cartola também para criar uma liga à parte.. quero também usar a API do campeonato brasileiro do globoesporte.com.. como proceder para conseguir esse token? a API do camp brasileiro precisa do token??

@giovanigenerali
Copy link
Owner

@rafa-trr vc tem informação da API do brasileirão? se tiver algo posta aqui. Veja no código que tem exemplo de como obter o token para chamar a API do CartolaFC, tem que passar seu email e senha.

@rafa-trr
Copy link

@giovanigenerali Estou logado no site da globo.com, acessei o link http://cocoon.globo.com/user/logged?callback=userAuth e me retornou um json com "status":"authorized" e me deu um token.. como faço para passar esse token para ser autenticado quando for acessar uma url em que precisa da autenticação ?
Sobre a API do brasileirão só sei desse link http://globoesporte.globo.com/dynamo/futebol/campeonato/campeonato-brasileiro/brasileirao2016/classificacao.json que inclusive não consigo acessar

@giovanigenerali
Copy link
Owner

@rafa-trr dá uma lida aqui mesmo #3 (comment) tem tudo explicado.

@rafa-trr
Copy link

@giovanigenerali beleza cara, vou dar umas testadas
Estive olhando o www.cartolandofc.com lá voce tem justamente uma coisa que preciso, a tabela de jogos com local e horário de cada rodada (meu objetivo é criar um bolão do brasileirão).. qual o link dessa API ??

@giovanigenerali
Copy link
Owner

@rafa-trr esse site não é meu mas aqui nesse meu projeto tem a url da API para listar os jogos. Leia o wiki aqui.

@pupato13
Copy link

@spydoug você conseguiu resolver o seu problema na chamada ajax da autenticação?

@andrelmariano
Copy link

Consegui fazer o login e recebo o retorno:

[id] => Authenticated
[userMessage] => Usuário autenticado com sucesso
[glbId] => blablablablabla...

até ai tudo bem, a dúvida agora é, como mostrar os dados do meu time = https://api.cartolafc.globo.com/auth/time

pode ajudar ?

logado
login

@aoliveira82
Copy link

Não estou conseguindo acessar os dados do API do cartola, quando informa a URL no browser https://api.cartolafc.globo.com/time/slug/terror-da-catalunya retorna os dados normal, mais na minha aplicação PHP parece que retorna vazio.

Esse é meu código
$url = "https://api.cartolafc.globo.com/time/slug/terror-da-catalunya";

$ch = curl_init();
$timeout = 0;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
$json_data = curl_exec($ch);
$obj = curl_exec($ch);
curl_close($ch);

print_r($json_data);

É o mesmo código que utilizei o ano passado, alguém está com problema para acessar?

@giovanigenerali
Copy link
Owner

está normal, dá uma olhada no código aqui do projeto load-api.php

@Thialyson
Copy link

Boa tarde,

Gostaria de saber se alguém está conseguindo pegar a foto do jogador,
se sim, como?

Agradeço desde já.

@jhonata-menezes
Copy link
Contributor

Acho que esse resolve para a foto: https://api.cartolafc.globo.com/atletas/mercado
Mas também:
No pontuados ele retorna: http://api.kartolafc.com.br/atletas/pontuados
No time ele tambem retorna: https://api.cartolafc.globo.com/time/id/2273084

@Thialyson
Copy link

@jhonata-menezes
Eu vi lá, mas mesmo assim o link que vem, sempre dá um 404 (pelo menos para mim).
Mas valeu!

@giovanigenerali
Copy link
Owner

giovanigenerali commented May 17, 2017

tem dar um replace na string FORMATO que vem na url da foto.

@jhonata-menezes
Copy link
Contributor

@Thialyson vem no Gitter

@aoliveira82
Copy link

aoliveira82 commented May 18, 2017

@giovanigenerali não consegui, fiz conforme o exemplo que você pediu (load-api.php) e nada fica em branco, resultado em http://fortodo.com.br/laliga/adm/teste.php.

código-fonte:

header('Content-type: application/json;charset=UTF-8');

$url = "https://api.cartolafc.globo.com/time/slug/terror-da-catalunya";

$json = exec("curl -X GET " . $url);
echo $json;

@giovanigenerali
Copy link
Owner

@aoliveira82 por favor qualquer dúvida sobre programação, uso da API etc.. postar no Gitter.

Repository owner locked and limited conversation to collaborators May 18, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests